Java JDBC API(Java Database Connectivity)使Java应用程序能够连接到关系数据库,如MySQL、PostgreSQL、MS SQL Server、Oracle、H2数据库等。JDBC API使查询和更新关系数据库以及调用存储过程和获取数据库元数据成为可能。Java JDBC API是核心Java SE SDK的一部分,使所有想要使用JDBC的Java应用程序都可以使用JDBC。下面是一张说明Java应用程序使用JDBC连接到关系数据库的图,Java应用程序使用JDBC连接到数据库:
Java JDBC API标准化了如何连接到数据库、如何对其执行查询、如何导航此类查询的结果、如何在数据库中执行更新、如何调用存储过程以及如何从数据库中获取元数据。我所说的“标准化”是指代码在不同的数据库产品中看起来是一样的。因此,如果您的项目将来需要,那么更改为另一个数据库会容易得多。
JDBC没有对发送到数据库的SQL进行标准化。SQL是由JDBC API的用户也就是我们自己编写的。各种不同数据库使用的SQL方言会略有不同,因此要实现100%数据库独立,SQL还必须100%数据库独立(即使用所有数据库都能理解的命令)。
Java JDBC API旨在与关系数据库交互,即通过标准SQL进行交互的数据库。JDBC API不适用于Mongo DB、Cassandra、Dynamo等非关系数据库。我们可以从Java应用程序中使用此类数据库,但是我们应该了解这些数据库为Java本身提供了什么驱动程序。
下面列出了一些流行的开源和商业关系数据库,它们具有JDBC驱动程序,因此您可以从Java中使用它们:
本JDBC教程介绍了Java 8+中可用的JDBC版本。本教程将不涉及JDBC API的每一个细节,而是重点介绍最常用的功能。之后你可以在JavaDoc中阅读其他内容。一旦您对JDBC有了很好的理解,阅读JavaDoc或其他地方的最后细节就不会那么困难了。
本JDBC教程仅介绍JDBC API。它不包括SQL、数据库和数据库设计规则等。如果需要深入研究我们还需要在其他地方研究这些概念。
Java JDBC API 的核心概念是:
在开始解释JDBC的各个组件如何工作之前,我将向您展示一个完整的JDBC示例,该示例加载JDBC驱动程序、打开数据库连接、创建语句、执行查询并迭代返回的ResultSet:
package com.tianjh;
import java.sql.*;
/**
* 测试jdbc连接
*
* @author tianjh
* @since 2023-08-22 09:42:14
*/
public class TestJdbc {
public static void main(String[] args) throws ClassNotFoundException {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1522:cs";
String user = "test";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, user, password)) {
try (Statement statement = connection.createStatement()) {
String sql = "select * from test";
try (ResultSet result = statement.executeQuery(sql)) {
while (result.next()) {
String aac002 = result.getString("aac002");
String aac003 = result.getString("aac003");
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
如果您刚刚接触JDBC不了解这一切,请不要担心。以下示例的每个部分将在以下部分中进行说明。
在Java 6之前,在使用JDBC驱动程序之前必须加载JDBC驱动程序。但在Java 6之后,这应该不再是必要的了。以下是加载Oracle JDBC驱动程序的样子:
Class.forName("oracle.jdbc.driver.OracleDriver");
传递给ClassforName()方法的JavaString参数是给定JDBC驱动程序的JDBC驱动程序类的名称。您必须为正在使用的JDBC驱动程序找到正确的类名。通常,每个数据库都有自己的JDBC驱动程序,因此您必须查找JDBC驱动程序类名(如果您使用的是Java 6之前的版本)。
有几种不同的JDBC驱动程序类型。每种类型都有自己的优点和缺点。您必须了解数据库供应商提供的驱动程序类型。
为了与数据库通信,必须首先打开与数据库的JDBC连接。打开JDBC数据库连接在我关于JDBC连接的教程中有更详细的解释,但这里有一个打开JDBC连接的快速示例:
String url = "jdbc:oracle:thin:@127.0.0.1:1522:cs";
String user = "test";
String password = "password";
Connection connection =
DriverManager.getConnection(url, user, password);
一旦你有了打开的数据库连接,你通常会更新数据库(插入新记录或更新现有记录),或者查询数据库,这意味着你从中读取记录。这两个操作将在下面的章节中简要介绍。
无论您需要更新还是查询数据库,都需要创建一个JDBC语句或JDBC PreparedStatement,通过它可以进行更新或查询。以下是创建JDBC语句实例的示例:
Statement statement = connection.createStatement();
创建JDBC语句或JDBC PreparedStatement实例后,可以更新数据库。以下是通过Statement实例更新数据库的示例:
创建 JDBC 或 JDBC 实例后,您可以 更新数据库。下面是通过实例更新数据库的示例:
Statement statement = connection.createStatement();
String sql = "update test set name='Tianjh' where id=111";
int rowsAffected = statement.executeUpdate(sql);
您还可以通过JDBC语句或PreparedStatement对象查询数据库。当您查询数据库时,您会得到一个JDBC ResultSet,通过它您可以访问查询的结果。以下是通过JDBC对数据库执行查询的示例:
Statement statement = connection.createStatement();
String sql = "select * from test";
ResultSet result = statement.executeQuery(sql);
while(result.next()) {
String name = result.getString("name");
long age = result.getLong ("age");
}
完成JDBC数据库连接后,必须再次关闭连接。JDBC连接可能占用应用程序内部以及数据库服务器内部的大量资源。因此,在使用后再次关闭数据库连接非常重要。通过JDBC连接的close()方法关闭JDBC连接。下面是一个关闭JDBC连接的示例:
connection.close();
在我的JDBC连接教程中,关闭JDBC连接部分也详细介绍了关闭JDBC连接。
下一篇: JDBC概述