📜  JDBC – 类型 2 驱动程序(1)

📅  最后修改于: 2023-12-03 15:16:38.996000             🧑  作者: Mango

JDBC - 类型 2 驱动程序

JDBC(Java Database Connectivity)是一个Java API,用于连接和操作各种类型的关系型数据库,以便在Java程序中进行数据管理。JDBC由Sun Microsystems提供,它是Java EE规范的一部分。其中,JDBC驱动程序起到关键作用,它连接Java应用程序和具体的关系型数据库。

JDBC驱动程序根据其实现方式可以分为四种类型,分别是:

  1. 类型 1 驱动程序:这种驱动程序是通过ODBC(开放数据库连接)API实现的,而ODBC是由微软公司提供的,因此JDBC的这种驱动程序只能在Windows操作系统上运行。
  2. 类型 2 驱动程序:这种驱动程序是通过Java本地方法实现的,它是一个纯Java驱动程序,不需要使用ODBC API,因此它可以在多个平台上运行。
  3. 类型 3 驱动程序:这种驱动程序通过Java中间层实现,它使用了一个Java应用程序作为它和数据库之间的接口,而这个Java应用程序则使用纯JDBC驱动程序来连接数据库。
  4. 类型 4 驱动程序:这种驱动程序是完全由Java实现的,它与具体数据库的连接协议由厂商定义,因此不同的数据库厂商有不同的实现方式,一般性能较好。

在这里,我们主要介绍JDBC的类型 2 驱动程序。

类型 2 驱动程序的特点
  • 类型 2 驱动程序是一个纯Java驱动程序,不需要在客户端安装额外的软件。
  • 类型 2 驱动程序通过Java本地方法实现,因此可以在多个平台上运行。
  • 类型 2 驱动程序直接和底层数据库进行通信,因此性能较好。
  • 类型 2 驱动程序支持JDBC 4.0规范,可以使用Java SE 6或更高版本。
类型 2 驱动程序的使用

使用类型 2 驱动程序连接数据库的基本步骤包括以下几个方面:

  1. 加载驱动程序:加载JDBC驱动程序类。
  2. 建立连接:通过JDBC API中的DriverManager类的getConnection方法建立与数据库的连接。
  3. 执行SQL语句:使用Statement、PreparedStatement或CallableStatement对象的execute、executeUpdate或executeQuery方法执行SQL语句。
  4. 处理结果:处理SQL执行结果集。

下面是一个使用类型 2 驱动程序连接MySQL数据库,并进行增、删、改、查操作的示例代码:

import java.sql.*;

public class MySQLJdbcExample {

    public static void main(String[] args) {
        // 加载驱动程序
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "root";

        // 建立连接
        try (Connection conn = DriverManager.getConnection(url, user, password)) {

            // 执行插入操作
            String sqlInsert = "insert into student(id, name, age) values(?, ?, ?)";

            try (PreparedStatement stmtInsert = conn.prepareStatement(sqlInsert)) {
                stmtInsert.setInt(1, 1);
                stmtInsert.setString(2, "张三");
                stmtInsert.setInt(3, 18);
                stmtInsert.executeUpdate();
            }

            // 执行更新操作
            String sqlUpdate = "update student set name = ? where id = ?";

            try (PreparedStatement stmtUpdate = conn.prepareStatement(sqlUpdate)) {
                stmtUpdate.setString(1, "李四");
                stmtUpdate.setInt(2, 1);
                stmtUpdate.executeUpdate();
            }

            // 执行删除操作
            String sqlDelete = "delete from student where id = ?";

            try (PreparedStatement stmtDelete = conn.prepareStatement(sqlDelete)) {
                stmtDelete.setInt(1, 1);
                stmtDelete.executeUpdate();
            }

            // 执行查询操作
            String sqlSelect = "select * from student where age >= ? and age <= ?";

            try (PreparedStatement stmtSelect = conn.prepareStatement(sqlSelect)) {
                stmtSelect.setInt(1, 18);
                stmtSelect.setInt(2, 20);

                try (ResultSet rs = stmtSelect.executeQuery()) {
                    while (rs.next()) {
                        System.out.println(rs.getInt("id") + " " + rs.getString("name") + " " + rs.getInt("age"));
                    }
                }
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}
总结

类型 2 驱动程序是一个纯Java驱动程序,不需要在客户端安装额外的软件,通过Java本地方法实现,可以在多个平台上运行,直接和底层数据库进行通信,因此性能较好。使用类型 2 驱动程序连接数据库的基本步骤包括加载驱动程序、建立连接、执行SQL语句和处理结果。