2015-10-27 23 views
-1

我知道2的方式連接到數據庫,以及我將它分爲2種方法(方法1和方法2)的性差異的Java連接方法(的classforname&RegisterDriver)

Connection connection; 

public void getConnectionMethod1() { 
    try { 
     Class.forName("net.sourceforge.jtds.jdbc.Driver"); 
     connection = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/latihan","sa","denni"); 
    } catch (SQLException e) { 
    } 
} 

public void getConnectionMethod2() { 
    try { 
     DriverManager.registerDriver(new net.sourceforge.jtds.jdbc.Driver()); 
     connection = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/latihan","sa","denni"); 
    } catch (SQLException e) { 
    } 
} 

我的問題是;他們之間有什麼區別嗎?方法1使用Class.forName而方法2使用registerDriver

它們之間的優缺點是什麼?

注:我只能利用PreparedStatement上方法2

+2

現在很久以來,JDBC並不需要這些。只需調用DriverManager.getConnection就足夠了。 – VGR

+0

VGR是正確的。所有較新的JDBC驅動程序都將自動註冊。這是通過驅動程序.jar文件中的文件「META-INF/services/java.sql.Driver」完成的。如果你的driver.jar文件有這個條目,你不需要任何一種方法。如果沒有,則應考慮升級到更新版本的驅動程序。 – Andreas

+3

http://stackoverflow.com/questions/5484227/jdbc-class-forname-vs-drivermanager-registerdriver – Satya

回答

2

從JDBC 4.0,Java開發人員不再需要顯式地加載使用類似的Class.forName()的代碼註冊JDBC驅動程序JDBC驅動程序。 DriverManager類通過在調用DriverManager.getConnection()方法時自動找到合適的驅動程序來解決此問題。此功能是向後兼容的,因此不需要對現有JDBC代碼進行更改。