Java登陆第九天——JDBC(一)DriverManager、Connection、Statement
JDBC
JDBC本身是Java提供的一套标准接口,由不同数据库厂商提供接口的具体实现。
至此,开发者只需调用JDBC就可以完成对各种数据库的操作。
mysql-jdbc-maven坐标
<!-- Mysql版本:5.7.36 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
JDBC主要类及接口
JDBC核心是为开发者提供的Java API库。(Java API是指提供各种功能的Java类\接口)
开发者使用JDBC可以创建数据库连接、执行SQL语句、检索结果集等。
java.sql包下常用类与接口如下:
全类名 | 类型 | 描述 |
---|---|---|
java.sql.DriverManager | 类 | 管理JDBC驱动程序 |
java.sql.Connection | 接口 | 建立与某数据库连接,一个连接就是一个会话 |
java.sql.Statement | 接口 | 执行SQL,并返回SQL执行后的结果 |
java.sql.PreparedStatement | 接口 | 更安全效率的执行SQL,并返回SQL执行后的结果 |
java.sql.ResultSet | 接口 | 查询SQL执行后的结果集 |
DriverManager类常用方法
正确加载jar包后,可以使用DriverManager类连接数据库,常用方法如下:
方法 | 类型 | 描述 |
---|---|---|
public static Connection getConnection(String url,String user, String password) throws SQLException | 静态方法 | 通过地址连接数据库,并传入用户名和密码 |
Mysql数据库连接地址形式如下:
String url= "jdbc:mysql://IP地址:端口号/数据库名";
//假设本机上存在一个tt数据库。那么地址应该如下
jdbc:mysql://localhost:3306/tt
getConnection()方法返回的是一个Connection对象。
Connection接口常用方法
所有数据库操作都从Connection接口开始。常用方法如下:
方法 | 类型 | 描述 |
---|---|---|
Statement createStatement() throws SQLException | 普通方法 | 创建Statement对象并返回 |
PreparedStatement prepareStatement(String sql) throws SQLException | 普通方法 | 创建prepareStatement对象并返回 |
boolean isClosed() throws SQLException | 普通方法 | 判断连接是否已关闭 |
void close() throws SQLException | 普通方法 | 关闭数据库 |
void setAutoCommit(boolean autoCommit) throws SQLException | 普通方法 | 设置数据库的自动提交(事务) |
boolean getAutoCommit() throws SQLException | 普通方法 | 判断数据库是否自动提交(事务) |
Savepoint setSavepoint(String name) throws SQLException | 普通方法 | 设置某保存点(事务) |
void rollback() throws SQLException | 普通方法 | 全部回滚(事务) |
void rollback(Savepoint savepoint) throws SQLException | 普通方法 | 回滚到某保存点(事务) |
void commit() throws SQLException | 普通方法 | 提交(事务) |
栗子:连接数据库
代码如下:
public static void main(String[] args) {
String user="root";
String password="0000";
try {
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/UserTest",user,password);
System.out.println(connection);//有输出内容就证明连接数据库成功。
connection.close();//同IO流一样,建议使用完毕就关闭连接。
} catch (Exception throwables) {
throwables.printStackTrace();
}
}
程序运行结果:
Sun Nov 19 15:25:54 CST 2023 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
com.mysql.jdbc.JDBC4Connection@d44fc21
警告信息是不建议在没有身份验证的情况下建立SSL连接。不影响正常使用。
警告信息的解决办法:
jdbc:mysql://localhost:3306/UserTest?useSSL=false
//加上参数useSSL=false关闭身份验证
连接数据库后肯定需要执行SQL对数据库进行操作。
Statement接口常用方法
Statement接口负责执行SQL。常用方法如下:
方法 | 类型 | 描述 |
---|---|---|
int executeUpdate(String sql) throws SQLException | 普通方法 | 执行DML操作,返回更新的行数 |
ResultSet executeQuery(String sql) throws SQLException | 普通方法 | 执行DQL操作,返回查询的结果集 |
boolean execute(String sql) throws SQLException | 普通方法 | 执行SQL语句 |
void close() throws SQLException | 普通方法 | 关闭Statement操作 |
DDL——数据定义语言。用于定义数据的结构。 指的是增,删,改数据库
DML——数据操作语言。用于检索或修改数据。 指的是增,删,改数据
DQL——数据查询语言。用于查询各种形式的数据。 指的是查询数据
DCL——数据控制语言。用于定义数据库用户的权限。 指的是管理数据库权限
栗子:在pon表中新增数据(水杯,52)
代码如下:
public static void main(String[] args) {
String user="root";
String password="0000";
try {
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/UserTest?useSSL=false",user,password);
Statement statement = connection.createStatement();
statement.executeUpdate("insert into pon values ('水杯','52')");
System.out.println("1");//证明执行到了这一步。
statement.close();//先开启的资源后关闭
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
程序运行结果:
1
使用Navicat查看pon表。(Navicat:数据库图形界面工具)
executeQuery()方法的返回类型是ResultSet。此对象中存放了所有查询结果。