本文概述
在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 JDBC驱动程序操作
当要通过DriverManager通知驱动程序时, 必须实现此接口。它添加在java.sql包中, 仅包含一种抽象方法。
DriverAction方法
方法 | 描述 |
---|---|
void deregister() | DriverManager.deregisterDriver(Driver)调用此方法以通知JDBC驱动程序已注销。 |
取消注册方法仅供JDBC驱动程序使用, 而不能由应用程序使用。
建议不要使用JDBC驱动程序在公共类中实现DriverAction。
如果在调用注销方法时有到数据库的活动连接, 则具体取决于连接是关闭还是允许继续。调用此方法后, 驱动程序是否会限制创建与数据库的新连接, 调用其他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);}
}
}
输出:
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 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() | 它以声明顺序返回包含此枚举类型的常量的数组。此方法可用于迭代常量。 |
评论前必须登录!
注册