JDBC(Java Database Connectivity)是 Java 语言提供的一种数据库连接规范,它允许 Java 程序与数据库进行交互。JDBC 为数据库访问提供了一致的 API,使得 Java 程序员可以使用统一的接口访问各种关系型数据库。JDBC 是 Java EE 技术(现在称为 Jakarta EE)的一部分,并且是 Java ME(Java Platform, Micro Edition)的一部分。
JDBC 架构:
JDBC 架构包括两个主要部分:
- JDBC API:这是 Java 程序员用来连接数据库、执行 SQL 语句、处理结果集的接口和类。
- JDBC 驱动程序:这是实现 JDBC API 的软件,它负责与特定的数据库管理系统(DBMS)进行通信。驱动程序通常由数据库厂商提供,或者由第三方开源项目提供。
JDBC 驱动类型:
JDBC 驱动程序通常分为以下四种类型:
- Type 1 (JDBC-ODBC Bridge Driver):这种驱动程序通过 ODBC(Open Database Connectivity)接口连接到数据库。它适用于具有 ODBC 驱动的数据库,但性能不是很好,且只适用于 Windows 平台。
- Type 2 (Native API Partly Java Driver):这种驱动程序部分用 Java 编写,部分用 C 或 C++ 编写,它直接调用数据库客户端库。性能较好,但需要为每个平台安装特定版本的客户端库。
- Type 3 (Network Protocol Driver):这种驱动程序通过中间件服务器与数据库通信。它将 JDBC 调用转换为网络协议,然后由中间件服务器转换为数据库协议。这种驱动程序通常用于 Applet,但由于增加了网络通信,性能可能受到影响。
- Type 4 (Pure Java Driver):这种驱动程序完全用 Java 编写,直接与数据库服务器通信。它通常提供最好的性能和跨平台能力。大多数现代数据库都提供了 Type 4 驱动程序。
使用 JDBC:
使用 JDBC 连接数据库通常涉及以下步骤:
- 加载驱动程序:使用
Class.forName()加载 JDBC 驱动程序的类。 - 建立连接:使用
DriverManager.getConnection()方法建立到数据库的连接。 - 创建语句:使用
Connection对象创建Statement或PreparedStatement对象。 - 执行查询:使用
Statement对象执行 SQL 查询。 - 处理结果:处理
ResultSet对象中的查询结果。 - 关闭连接:关闭
ResultSet、Statement和Connection对象,释放资源。
示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcExample {
public static void main(String[] args) {
// 加载驱动程序
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 建立连接
String url = "jdbc:mysql://localhost:3306/testdb";
String username = "root";
String password = "password";
Connection connection = null;
try {
connection = DriverManager.getConnection(url, username, password);
// 创建语句
Statement statement = connection.createStatement();
// 执行查询
ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
// 处理结果
while (resultSet.next()) {
System.out.println(resultSet.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接
try {
if (connection != null) {
connection.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
在上面的代码中,我们加载了 MySQL 的 JDBC 驱动程序,建立了到名为 testdb 的数据库的连接,并执行了一个简单的查询来获取 users 表中的所有用户名。
JDBC 的优点:
- 标准化:提供了一致的 API,使得 Java 程序能够轻松地在不同数据库之间迁移。
- 易于使用:API 设计直观,易于理解和实现。
- 广泛支持:几乎所有的关系型数据库都提供了 JDBC 驱动程序。
- 跨平台:由于 JDBC 是 Java 的一部分,它可以在任何支持 Java 的平台上运行。 JDBC 是 Java Web 开发和应用程序中访问数据库的基石,理解 JDBC 对于任何 Java 开发者来说都是非常重要的。