Java 8 JDBC改进

本文概述

  • Java JDBC驱动程序操作
  • Java JDBC4.2 DriverAction示例
  • Java JDBC SQLType
  • Java JDBC类型
  • JDBCType字段
  • JDBCType方法
在Java 8中, Java在JDBC API中进行了两项重大更改。
1)JDBC-ODBC桥已被删除。 Oracle不支持JDBC-ODBC桥。 Oracle建议你使用数据库供应商提供的JDBC驱动程序, 而不要使用JDBC-ODBC Bridge。
2)在JDBC 4.2中添加了一些新功能。 Java JDBC 4.2引入了以下功能:
  • 增加了REF_CURSOR支持。
  • 添加java.sql.DriverAction接口
  • 在DriverManager类中的deregisterDriver方法上添加安全检查
  • java.sql.SQLType接口的添加
  • java.sql.JDBCType枚举的添加
  • 添加对大量更新的支持
  • 更改现有接口
  • 行集1.2:列出JDBC行集的增强功能。
Java 8 JDBC改进

文章图片
Java JDBC驱动程序操作 当要通过DriverManager通知驱动程序时, 必须实现此接口。它添加在java.sql包中, 仅包含一种抽象方法。
DriverAction方法
方法 描述
void deregister() DriverManager.deregisterDriver(Driver)调用此方法以通知JDBC驱动程序已注销。
取消注册方法仅供JDBC驱动程序使用, 而不能由应用程序使用。
建议不要使用JDBC驱动程序在公共类中实现DriverAction。
【Java 8 JDBC改进】如果在调用注销方法时有到数据库的活动连接, 则具体取决于连接是关闭还是允许继续。调用此方法后, 驱动程序是否会限制创建与数据库的新连接, 调用其他Driver方法或引发SQLException的能力, 这取决于实现。
Java JDBC4.2 DriverAction示例
import java.sql.*; // implementing DriverAction interface class JdbcExample implements DriverAction{ // implementing deregister method of DriverAction interface @Override public void deregister() { System.out.println("Driver deregistered"); } public static void main(String args[]){ try{ // Creating driver instance Driver driver = new com.mysql.jdbc.Driver(); // Creating Action Driver DriverAction da = new JdbcExample(); // Registering driver by passing driver and driverAction DriverManager.registerDriver(driver, da); // Creating connection Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "mysql"); //Here student is database name, root is username and password is mysql Statement stmt=con.createStatement(); // Executing SQL query ResultSet rs=stmt.executeQuery("select * from user"); while(rs.next()){ System.out.println(rs.getInt(1)+""+rs.getString(2)+""+rs.getString(3)); } // Closing connection con.close(); // Calling deregisterDriver method DriverManager.deregisterDriver(driver); }catch(Exception e){ System.out.println(e); } } }

输出:
1Arun25 2irfan22 3Neraj kumar25 Driver deregistered

Java JDBC SQLType 该接口用于标识通用SQL类型, JDBC类型或特定于供应商的数据类型。
它提供以下方法。
方法 描述
String getName() 它返回代表SQL数据类型的SQLType名称。
String getVendor() 它返回支持此数据类型的供应商的名称。通常返回的值是该供应商的软件包名称。
Integer getVendorTypeNumber() 它返回该数据类型的供应商特定的类型编号。
Java JDBC类型 它是一个枚举, 它定义用于标识通用SQL类型(称为JDBC类型)的常量。它扩展了java.lang.Enum并实现了java.sql.SQLType。
JDBCType字段 下表包含JDBCType中定义的常量。
枚举常量 描述
公共静态最终JDBCType ARRAY 它标识通用SQL类型ARRAY。
公共静态最终JDBCType BIGINT 它标识通用SQL类型BIGINT。
公共静态最终JDBCType BIT 它标识通用SQL类型BIT。
公共静态最终JDBCType BLOB 它标识通用SQL类型BLOB。
公共静态最终JDBCType BOOLEAN 它标识通用SQL类型BOOLEAN。
公共静态最终JDBCType CHAR 它标识通用SQL类型CHAR。
公共静态最终JDBCType CLOB 它标识通用SQL类型CLOB。
公共静态最终JDBCType DATALINK 它标识通用SQL类型DATALINK。
公共静态最终JDBCType DATE 它标识通用SQL类型DATE。
公共静态最终JDBCType DECIMAL 它标识通用SQL类型DECIMAL。
公共静态最终JDBCType DISTINCT 它标识通用SQL类型DISTINCT。
公共静态最终JDBCType DOUBLE 它标识通用SQL类型DOUBLE。
公共静态最终JDBCType FLOAT 它标识通用SQL类型FLOAT。
公共静态最终JDBCType INTEGER 它标识通用SQL类型INTEGER。
公共静态最终JDBCType JAVA_OBJECT 它指示SQL类型是特定于数据库的, 并且已映射到可以通过方法getObject和setObject访问的Java对象。
公共静态最终JDBCType LONGNVARCHAR 它标识通用SQL类型LONGNVARCHAR。
公共静态最终JDBCType NCHAR 它标识通用SQL类型NCHAR。
公共静态最终JDBCType NCLOB 它标识通用SQL类型NCLOB。
公共静态最终JDBCType NULL 它标识通用SQL值NULL。
公共静态最终JDBCType NUMERIC 它标识通用SQL类型NUMERIC。
公共静态最终JDBCType NVARCHAR 它标识通用SQL类型NVARCHAR。
公共静态最终JDBCType其他 它指示SQL类型是特定于数据库的, 并且已映射到可以通过方法getObject和setObject访问的Java对象。
公共静态最终JDBCType REAL 它标识通用SQL类型REAL。标识通用SQL类型VARCHAR。
公共静态最终JDBCType REF 它标识通用SQL类型REF。
公共静态最终JDBCType REF_CURSOR 它标识通用SQL类型REF_CURSOR。
公共静态最终JDBCType ROWID 它标识SQL类型ROWID。
公共静态最终JDBCType SMALLINT 它标识通用SQL类型SMALLINT。
公共静态最终JDBCType SQLXML 它标识通用SQL类型SQLXML。
公共静态最终JDBCType STRUCT 它标识通用SQL类型STRUCT。
公共静态最终JDBCType TIME 它标识通用SQL类型TIME。
公共静态最终JDBCType TIME_WITH_TIMEZONE 它标识通用SQL类型TIME_WITH_TIMEZONE。
公共静态最终JDBCType TIMESTAMP 它标识通用SQL类型TIMESTAMP。
公共静态最终JDBCType TIMESTAMP_WITH_TIMEZONE 它标识通用SQL类型TIMESTAMP_WITH_TIMEZONE。
公共静态最终JDBCType TINYINT 它标识通用SQL类型TINYINT。
公共静态最终JDBCType VARBINARY 它标识通用SQL类型VARBINARY。
公共静态最终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() 它以声明顺序返回包含此枚举类型的常量的数组。此方法可用于迭代常量。

    推荐阅读