在建立數據庫連接的情況下,我們通常導入所需的軟件包和使用的Class.forName()被調用類的類加載器加載所需的驅動程序類。的Class.forName(Driver.class)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
....
....
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(...);
不能我們只是掉落的Class.forName()如本: -
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.*;
....
....
Connection con=DriverManager.getConnection(...);
當一個類的依賴性是由加載的依賴同樣的類加載器加載我的問題是類,通過與Class.forName(className)隱式使用一起使用的相同機制,爲什麼要顯式給出Class.forName()。只需在導入語句中包含驅動程序類。 驅動程序類在創建DriverManager.getConnection()行時是否會自動加載? com.mysql.jdbc包在import語句中。 或者我需要添加像
Class clazz=com.mysq.jdbc.Driver.class
人行觸發的Class.forName()。
那麼像「類>虛擬」這樣的線如何幫助加載類?對Class.forName()的調用是否隱式進行?誰打電話?或者,該行簡單地被Class.forName(com.mysql.jdbc.Driver.class)取代,在這種情況下,這將不再是編譯時依賴性? – prvn
如果你引用一個類,它將被加載。對於JDBC驅動程序,只需將其註冊到驅動程序管理器即可。當你在代碼中引用一個類時(比如'new Arraylist()'或'com.mysql.jdbc.Driver.class'),JVM會自動加載類(如果還沒有完成的話)。 –
Thilo