Java 8 JDBC 改进

17 Mar 2025 | 5 分钟阅读

在 Java 8 中,Java 对 JDBC API 进行了两项重大更改。

1) JDBC-ODBC 桥已删除。

Oracle 不支持 JDBC-ODBC 桥。 Oracle 建议您使用数据库供应商提供的 JDBC 驱动程序,而不是 JDBC-ODBC 桥。

2) 在 JDBC 4.2 中添加了一些新功能。

Java JDBC 4.2 引入了以下功能

  • 添加了 REF_CURSOR 支持。
  • 添加了 java.sql.DriverAction 接口
  • 添加了对 DriverManager 类中 deregisterDriver 方法的安全检查
  • 添加了 java.sql.SQLType 接口
  • 添加了 java.sql.JDBCType 枚举
  • 添加了对大更新计数值的支持
  • 对现有接口的更改
  • Rowset 1.2:列出了 JDBC RowSet 的增强功能。
Java 8 JDBC Improvements

Java JDBC DriverAction

这是一个接口,当 Driver 希望由 DriverManager 通知时,必须实现该接口。它被添加到 java.sql 包中,并且只包含一个抽象方法。

DriverAction 方法

方法描述
void deregister()此方法由 DriverManager.deregisterDriver(Driver) 调用,以通知 JDBC 驱动程序它已取消注册。

deregister 方法仅供 JDBC 驱动程序使用,而不能由应用程序使用。

建议 JDBC 驱动程序不要在公共类中实现 DriverAction。

如果在调用 deregister 方法时存在与数据库的活动连接,则具体实现取决于连接是否关闭或允许继续。一旦调用此方法,驱动程序是否可以限制创建到数据库的新连接、调用其他 Driver 方法或抛出 SQLException,都取决于具体实现。


Java JDBC4.2 DriverAction 示例

输出

1  Arun  25
2  irfan  22
3  Neraj kumar  25
Driver deregistered

Java JDBC SQLType

此接口用于标识通用 SQL 类型、JDBC 类型或特定于供应商的数据类型。

它提供了以下方法。

方法描述
String getName()它返回表示 SQL 数据类型的 SQLType 名称。
String getVendor()它返回支持此数据类型的供应商的名称。 返回的值通常是该供应商的包名。
Integer getVendorTypeNumber()它返回数据类型的供应商特定类型号。

Java JDBCType

这是一个枚举,它定义了用于标识通用 SQL 类型(称为 JDBC 类型)的常量。 它扩展了 java.lang.Enum 并实现了 java.sql.SQLType。

JDBCType 字段

下表包含在 JDBCType 中定义的常量。

枚举常量描述
public static final JDBCType ARRAY它标识了通用 SQL 类型 ARRAY。
public static final JDBCType BIGINT它标识了通用 SQL 类型 BIGINT。
public static final JDBCType BIT它标识了通用 SQL 类型 BIT。
public static final JDBCType BLOB它标识了通用 SQL 类型 BLOB。
public static final JDBCType BOOLEAN它标识了通用 SQL 类型 BOOLEAN。
public static final JDBCType CHAR它标识了通用 SQL 类型 CHAR。
public static final JDBCType CLOB它标识了通用 SQL 类型 CLOB。
public static final JDBCType DATALINK它标识了通用 SQL 类型 DATALINK。
public static final JDBCType DATE它标识了通用 SQL 类型 DATE。
public static final JDBCType DECIMAL它标识了通用 SQL 类型 DECIMAL。
public static final JDBCType DISTINCT它标识了通用 SQL 类型 DISTINCT。
public static final JDBCType DOUBLE它标识了通用 SQL 类型 DOUBLE。
public static final JDBCType FLOAT它标识了通用 SQL 类型 FLOAT。
public static final JDBCType INTEGER它标识了通用 SQL 类型 INTEGER。
public static final JDBCType JAVA_OBJECT它指示 SQL 类型是特定于数据库的,并映射到可以通过方法 getObject 和 setObject 访问的 Java 对象。
Public static final JDBCType LONGNVARCHAR它标识了通用 SQL 类型 LONGNVARCHAR。
public static final JDBCType NCHAR它标识了通用 SQL 类型 NCHAR。
public static final JDBCType NCLOB它标识了通用 SQL 类型 NCLOB。
public static final JDBCType NULL它标识了通用 SQL 值 NULL。
public static final JDBCType NUMERIC它标识了通用 SQL 类型 NUMERIC。
public static final JDBCType NVARCHAR它标识了通用 SQL 类型 NVARCHAR。
public static final JDBCType OTHER它指示 SQL 类型是特定于数据库的,并映射到可以通过方法 getObject 和 setObject 访问的 Java 对象。
public static final JDBCType REAL它标识了通用 SQL 类型 REAL。标识了通用 SQL 类型 VARCHAR。
public static final JDBCType REF它标识了通用 SQL 类型 REF。
public static final JDBCType REF_CURSOR它标识了通用 SQL 类型 REF_CURSOR。
public static final JDBCType ROWID它标识了 SQL 类型 ROWID。
public static final JDBCType SMALLINT它标识了通用 SQL 类型 SMALLINT。
public static final JDBCType SQLXML它标识了通用 SQL 类型 SQLXML。
public static final JDBCType STRUCT它标识了通用 SQL 类型 STRUCT。
public static final JDBCType TIME它标识了通用 SQL 类型 TIME。
public static final JDBCType TIME_WITH_TIMEZONE它标识了通用 SQL 类型 TIME_WITH_TIMEZONE。
public static final JDBCType TIMESTAMP它标识了通用 SQL 类型 TIMESTAMP。
public static final JDBCType TIMESTAMP_WITH_TIMEZONE它标识了通用 SQL 类型 TIMESTAMP_WITH_TIMEZONE。
public static final JDBCType TINYINT它标识了通用 SQL 类型 TINYINT。
public static final JDBCType VARBINARY它标识了通用 SQL 类型 VARBINARY。
public static final JDBCType VARCHAR它标识了通用 SQL 类型 VARCHAR。

JDBCType 方法

方法描述
public String getName()它返回表示 SQL 数据类型的 SQLType 名称。
public String getVendor()它返回支持此数据类型的供应商的名称。
public Integer getVendorTypeNumber()它返回数据类型的供应商特定类型号。
public static JDBCType valueOf(int type)它返回与指定的 Types 值对应的 JDBCType。如果此枚举类型没有具有指定 Types 值的常量,则会抛出 IllegalArgumentException。
public static JDBCType valueOf(String name)它返回此类型中具有指定名称的枚举常量。该字符串必须与用于在此类型中声明枚举常量的标识符完全匹配。如果此枚举类型没有具有指定名称的常量,则会抛出 IllegalArgumentException。 如果参数为 null,则会抛出 NullPointerException。
public static JDBCType[] values()它返回一个包含此枚举类型的常量的数组,按照它们声明的顺序。此方法可用于遍历常量。