JDBC的使用

119 阅读3分钟

JDBC(Java Database Connectivity)是 Java 语言提供的一种数据库连接规范,它允许 Java 程序与数据库进行交互。JDBC 为数据库访问提供了一致的 API,使得 Java 程序员可以使用统一的接口访问各种关系型数据库。JDBC 是 Java EE 技术(现在称为 Jakarta EE)的一部分,并且是 Java ME(Java Platform, Micro Edition)的一部分。

JDBC 架构:

JDBC 架构包括两个主要部分:

  1. JDBC API:这是 Java 程序员用来连接数据库、执行 SQL 语句、处理结果集的接口和类。
  2. JDBC 驱动程序:这是实现 JDBC API 的软件,它负责与特定的数据库管理系统(DBMS)进行通信。驱动程序通常由数据库厂商提供,或者由第三方开源项目提供。

JDBC 驱动类型:

JDBC 驱动程序通常分为以下四种类型:

  1. Type 1 (JDBC-ODBC Bridge Driver):这种驱动程序通过 ODBC(Open Database Connectivity)接口连接到数据库。它适用于具有 ODBC 驱动的数据库,但性能不是很好,且只适用于 Windows 平台。
  2. Type 2 (Native API Partly Java Driver):这种驱动程序部分用 Java 编写,部分用 C 或 C++ 编写,它直接调用数据库客户端库。性能较好,但需要为每个平台安装特定版本的客户端库。
  3. Type 3 (Network Protocol Driver):这种驱动程序通过中间件服务器与数据库通信。它将 JDBC 调用转换为网络协议,然后由中间件服务器转换为数据库协议。这种驱动程序通常用于 Applet,但由于增加了网络通信,性能可能受到影响。
  4. Type 4 (Pure Java Driver):这种驱动程序完全用 Java 编写,直接与数据库服务器通信。它通常提供最好的性能和跨平台能力。大多数现代数据库都提供了 Type 4 驱动程序。

使用 JDBC:

使用 JDBC 连接数据库通常涉及以下步骤:

  1. 加载驱动程序:使用 Class.forName() 加载 JDBC 驱动程序的类。
  2. 建立连接:使用 DriverManager.getConnection() 方法建立到数据库的连接。
  3. 创建语句:使用 Connection 对象创建 StatementPreparedStatement 对象。
  4. 执行查询:使用 Statement 对象执行 SQL 查询。
  5. 处理结果:处理 ResultSet 对象中的查询结果。
  6. 关闭连接:关闭 ResultSetStatementConnection 对象,释放资源。

示例代码:

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 开发者来说都是非常重要的。