Java的JDBC学习

41ee7a77742a531408b37fa79d09a09cdce637b6

加油

只是简单的连接与查询,更多细致操作看

JDBC - 事务 (w3schools.cn)

关于 JDBC 指南_w3cschool

开发用到了再搜索。

JDBC是什么?

JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接。

JDBC库中所包含的API通常与数据库使用于:

  • 连接到数据库
  • 创建SQL或MySQL语句
  • 在数据库中执行SQL或MySQL查询
  • 查看和修改数据库中的数据记录

使用JDBC前提条件

在学习JDBC之前,需要对以下两个编程知识有一定的了解:

  • JAVA核心编程
  • SQL语句或一种数据库系统(如:MySQL,Oracle数据库)

JDBC环境设置

请确认您已完成以下设置:

  • JAVA(JDK)安装
  • 数据库系统的安装(如:MySQL的安装)

除上述者外环境配置外,还需要建立一个数据库,为本程项目作为测试使用。假设创建一个数据库:test,在这个数据库上创建一张表:employees

创建JDBC应用程序

建立一个JDBC应用程序,本教程中以Java连接MySQL为一个示例,分六个步骤进行:

1. 导入包

在程序中包含数据库编程所需的JDBC类。大多数情况下,使用 import java.sql.* 就足够了,如下所示:

1
2
3
//STEP 1. Import required packages
import java.sql.*;
Java

2. 注册JDBC驱动程序

需要初始化驱动程序,这样就可以打开与数据库的通信。以下是代码片段实现这一目标:

1
2
3
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
Java

3. 打开一个连接

使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个数据库的物理连接,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnector {

public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/your_database_name";
String username = "your_username";
String password = "your_password";

try {
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);
System.out.println("Connected to the database!");
// Add your database operations here
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

4. 执行一个查询

需要使用一个类型为StatementPreparedStatement的对象,并提交一个SQL语句到数据库执行查询。如下:

1
2
3
4
5
6
7
8
9
String sqlQuery = "SELECT id, first, last, age FROM Employees";

// 创建 PreparedStatement 对象
try (PreparedStatement preparedStatement = connection.prepareStatement(sqlQuery)) {
// 执行查询
ResultSet resultSet = preparedStatement.executeQuery();

// 处理查询结果
}

如果要执行一个SQL语句:UPDATEINSERTDELETE语句,那么需要下面的代码片段:

1
2
3
4
5
6
7
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "DELETE FROM Employees";
ResultSet rs = stmt.executeUpdate(sql);
Java

5. 从结果集中提取数据

这一步中演示如何从数据库中获取查询结果的数据。可以使用适当的ResultSet.getXXX()方法来检索的数据结果如下:

1
2
3
4
5
6
7
8
while (resultSet.next()) {
int id = resultSet.getInt("id");
String firstName = resultSet.getString("first");
String lastName = resultSet.getString("last");
int age = resultSet.getInt("age");

System.out.println("Employee: " + id + ", " + firstName + " " + lastName + ", Age: " + age);
}

6. 清理环境资源

在使用JDBC与数据交互操作数据库中的数据后,应该明确地关闭所有的数据库资源以减少资源的浪费,对依赖于JVM的垃圾收集如下:

1
2
3
4
5
//STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
Java

第一个JDBC 程序实例

结合Maven

配置maven导入jar包

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>

新建一个com.example包,并且新建一个类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnector {

public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/JDBC?serverTimezone=UTC";
String username = "forlearn";
String password = "forlearn";

try {
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);
System.out.println("Connected to the database!");
// Add your database operations here
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

image-20240214170056024

注意

1
2
3
4
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/your_database_name?serverTimezone=UTC";
String username = "your_username";
String password = "your_password";

your_database_name后要添加?serverTimezone=UTC

因为版本驱动过旧,也可以换新的驱动。