📅  最后修改于: 2023-12-03 15:37:36.138000             🧑  作者: Mango
JDBC(Java Database Connectivity)是 Java 语言中用于处理关系型数据库的 API(应用程序接口)。通过 JDBC,我们可以实现 Java 应用程序与各种数据库的交互。
建立 JDBC 连接的过程和流程大致如下:
在使用 JDBC 前,需要将相应的驱动程序加载到内存中。通常,这是通过 Class.forName() 方法来实现的。对于大多数数据库来说,JDBC 驱动程序都是一个 JAR 文件,可以将它们放在应用程序的类路径下,然后使用 Class.forName() 方法来加载驱动程序。
// 加载 MySQL 驱动程序
Class.forName("com.mysql.jdbc.Driver");
要连接到一个数据库,需要提供连接 URL、用户名和密码等信息。连接 URL 的格式不同于各种数据库类型。
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
// ...
} catch (SQLException e) {
e.printStackTrace();
}
在这个例子中,我们使用了 try-with-resources 语法,来确保 Connection 对象能在使用完后被关闭。如果没有这段语法,你需要在 finally 块中手动关闭 Connection 对象。
一旦连接成功,我们就可以创建 Statement 对象,用于将 SQL 语句提交给数据库执行。
try (Connection conn = DriverManager.getConnection(url, user, password)) {
Statement stmt = conn.createStatement();
// ...
} catch (SQLException e) {
e.printStackTrace();
}
可以通过 Statement 对象的 execute() 方法来执行 SQL 语句。executeUpdate() 方法用于执行 INSERT、UPDATE 或 DELETE 语句,返回受影响的行数;executeQuery() 方法用于执行 SELECT 语句,返回一个 ResultSet 对象,其中包含了查询结果的数据。
try (Connection conn = DriverManager.getConnection(url, user, password)) {
Statement stmt = conn.createStatement();
// 执行 SELECT 语句
ResultSet rs = stmt.executeQuery("SELECT * FROM customers");
// 处理结果集
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.printf("id=%d, name=%s\n", id, name);
}
} catch (SQLException e) {
e.printStackTrace();
}
ResultSet 对象中包含了查询结果的数据,我们可以使用各种方法来获取其中的值。
ResultSet rs = stmt.executeQuery("SELECT * FROM customers WHERE age > 18");
// 处理结果集
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.printf("id=%d, name=%s, age=%d\n", id, name, age);
}
无论连接失败或成功,都需要在使用后关闭数据库连接,释放资源。
try (Connection conn = DriverManager.getConnection(url, user, password)) {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM customers");
// 处理结果集
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
在这个例子中,我们手动关闭了 ResultSet 和 Statement 对象,因为 JDBC 对象没有被垃圾回收机制自动释放。通常情况下,如果使用 try-with-resources 语法创建 JDBC 对象,那么这些对象会在使用完后自动关闭。
以上就是建立 JDBC 连接的过程和流程。要注意一些细节问题,比如数据库连接字符串、JDBC 驱动程序类名、SQL 语句的执行方式,以及如何使用 ResultSet 对象来处理查询结果等。虽然 JDBC 略显繁琐,但是它仍然是与关系型数据库交互的必备技能。