JDBC中常用的类和接口
Java 语言提供了丰富的类和接口用于数据库编程,利用这些类和接口可以方便地进行数据访问和处理。本节将讲解一些常用的 JDBC 类和接口,这些类或接口都在 java.sql 包中。
DriverManager类
DriverManager 类是 JDBC 的管理层,用于管理数据库中的驱动程序。在操作指定数据库之前,需要使用 Java 中 Class 类的静态方法 forName(String className) 加载指定数据库的驱动程序。
例如,加载 MySQL 数据库驱动程序(包名为 mysql_connector_java_8.X.X.jar)的代码如下:
try {
Class.forName("com.mysql.cj.jdbc.Driver"); // 加载 MySQL 数据库驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
加载完相应数据库的驱动程序后,Java 会自动将驱动程序的实例注册到 DriverManager 类中,这时即可通过 DriverManager 类的 getConnection() 方法连接相应的数据库。DriverManager 类的常用方法如表17.1所示。

例如,使用DriverManager连接本地MySQL数据库的代码如下:
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true","root","password");
在上述连接中,127.0.0.1 表示本地 IP 地址,3306 是 MySQL 的默认端口,test 是数据库名称,useUnicode 用来启用 Unicode 字符集,characterEncoding 指定了字符集为 UTF-8,useSSL 指明不启用 SSL 连接,serverTimezone 将时区定为中国,zeroDateTimeBehavior 让空的日期数据以 null 形式返回,allowPublicKeyRetrieval 允许客户端从服务器上获取公钥。
除了连接 MySQL 8.0 数据库,其他常见数据库的加载驱动包和连接代码如下。
-
加载 Oracle 数据库驱动程序(包名为 ojdbc.jar 或 class14.jar):
Class.forName("oracle.jdbc.driver.OracleDriver "); DriverManager.getConnection("jdbc:oracle:thin:@//127.0.0.1:1521/test","system","password");
-
加载SQL Server 2005及以上版本数据库驱动程序(包名为 sqljdbc4.jar):
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test","sa","password");
-
加载MySQL 5.X版本数据库驱动程序(包名为 mysql_connector_java_5.X.X_bin.jar):
Class.forName("com.mysql.jdbc.Driver "); DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","password");
Connection接口
Connection 接口代表与特定的数据库的连接,在连接上下文中执行 SQL 语句并返回结果。Connection 接口的常用方法如表17.2所示。

Statement接口
Statement 接口用于在已经建立连接的基础上向数据库中发送 SQL 语句。在 JDBC 中有 3 种 Statement 对象,分别是 Statement、PreparedStatement 和 CallableStatement。Statement 对象用于执行不带参数的简单 SQL 语句;PreparedStatement 继承了 Statement,用来执行动态 SQL 语句;CallableStatement 继承了 PreparedStatement,用于执行对数据库的存储过程的调用。Statement 接口的常用方法如表17.3所示。

PreparedStatement接口
PreparedStatement 接口用来动态地执行 SQL 语句。PreparedStatement 实例执行的动态 SQL 语句,将被预编译并保存到 PreparedStatement 实例中,从而可以反复地执行该 SQL 语句。PreparedStatement 接口的常用方法如表17.4所示。

ResultSet接口
ResultSet 接口类似于一个临时表,用来暂时存储数据库查询操作所获得的结果集。ResultSet 实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过 next() 方法可将指针向下移。
在 JDBC 2.0(JDK 1.2) 之后,该接口添加了一组更新方法 updateXXX(),该方法有两个重载方法,它们可根据列的索引号和列的名称来更新指定列。但该方法并没有将对数据进行的操作同步到数据库中,因此需要使用 updateRow() 方法或 insertRow() 方法来更新数据库。ResultSet 接口的常用方法如表17.5所示。
