当前位置: 首页 > 教程 > Java8 >

Java8 JDBC改进

精华
小牛编辑
157浏览
2023-03-14

1 Java8 JDBC改进

在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行集的增强功能。

 2 Java JDBC驱动程序操作

当要通过DriverManager通知驱动程序时,必须实现此接口。它添加在java.sql包中,仅包含一个抽象方法

2.1 DriverAction方法

方法 描述
void deregister() DriverManager.deregisterDriver(Driver)调用此方法以通知JDBC驱动程序已注销。

取消注册方法仅供JDBC驱动程序使用,而不能由应用程序使用。

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

如果在调用注销方法时存在到数据库的活动连接,则具体取决于连接是关闭还是允许继续。调用此方法后,驱动程序是否可能会限制创建与数据库的新连接,调用其他Driver方法或引发SQLException的能力,这取决于实现。

3 Java JDBC4.2 DriverAction示例

/**
 * 小牛知识库网: https://www.xnip.cn
 */
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