2014-03-19 35 views
-1

我已經寫了dbconnection.java類,它有一個靜態塊,其中i加載驅動程序類爲什麼在db連接類中寫入class.forname(com.mysql.jdbc.Driver)?

static 
{ 
    try 
    { 
     Class.forName(com.mysql.jdbc.Driver); 
    } 
    catch(ClassNotFoundException e) 
    { 
     e.printStackTrace(); 
    } 
} 

我知道,這是靜塊被寫入寄存器驅動程序。但即使當我評論這個靜態塊並嘗試建立數據庫連接時,它也正在被連接。

,所以我想知道什麼是寫這個靜態塊的重要性或意義

+0

的目光,鋸到JDBC 4 –

+0

看到http://stackoverflow.com/questions/19390942/jdbc-connection-alternative-to-class-forname-for-driver-loading – Leo

+1

HTTP:/ /docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html - 注意明確解釋這一點的部分,以及爲什麼在大多數情況下不再需要它。 –

回答

1

(我回答這個問題,因爲我們很遺憾沒有RTFM關閉原因)

如果你讀了tutorial provided by oracle你會發現,這曾經是必要的,但有許多現代化的(JDBC 4.0)驅動程序,而不是所以:

在JDBC的早期版本,以獲得一個連接,你首先必須通過調用方法Class.forName初始化JDBC驅動程序。這個方法需要一個java.sql.Driver類型的對象。每個JDBC驅動程序都包含一個或多個實現接口java.sql.Driver的類。 Java DB的驅動程序是org.apache.derby.jdbc.EmbeddedDriver和org.apache.derby.jdbc.ClientDriver,而MySQL Connector/J的驅動程序是com.mysql.jdbc.Driver。請參閱DBMS驅動程序的文檔以獲取實現接口java.sql.Driver的類的名稱。

自動加載在您的類路徑中找到的任何JDBC 4.0驅動程序。 (但是,必須手動之前JDBC 4.0加載任何驅動程序與方法Class.forName。)

(重點煤礦)

-2

在放置靜塊這個代碼被用來確保一個工藝具有同一個驅動程序。它在加載類時執行(或初始化,準確地說,但通常不會注意到區別)。 詳情可this link

相關問題