Java - JDBC 操作流程
前言
JDBC 作为一种规范, 提供接口由供应商(如: MySQL)去实现底层驱动, 开发人员只需实现自己的业务代码.
操作
MySQL 版本
mysql> select version();
+-------------------------+
| version() |
+-------------------------+
| 8.0.23-0ubuntu0.20.04.1 |
+-------------------------+
1 row in set (0.00 sec)
Maven 依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
代码实现
InputStream resourceAsStream = Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("jdbc.properties");
Properties p = new Properties();
p.load(resourceAsStream);
// 1. 加载 MySQL 驱动并注册
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 获取连接
Connection connection = DriverManager.getConnection(URL, p);
// 3. 创建 Statement
Statement statement = connection.createStatement();
// 4. 执行语句
// /* ping */
ResultSet resultSet = statement.executeQuery("select 1");
// 处理结果
while (resultSet.next()) {
String database = resultSet.getString("1");
System.out.println(database);
}
下面讲解驱动大概为我们做了什么
1. 加载 MySQL 驱动并注册
- Class::forName 去加载名为 com.mysql.cj.jdbc.Driver 的类
- 如果该类是第一次加载则会执行 static 代码块
// static 代码块
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
2. 获取连接
- DriverManager 根据 url 和属性循环遍历驱动尝试连接, 如果成功则返回 Connection
3. 创建 Statement
- 若无参数使用默认参数创建 Statement
4. 执行语句
- 重置取消状态
- 关闭所有打开的 Results
- 获取 session
- 执行语句
- 发送语句
- 读取结果
- 返回 result