[英]Using class.forName in JDBC
以下是連接到MySQL數據庫的代碼
// This will load the MySQL driver, each DB has its own driver
Class.forName("com.mysql.jdbc.Driver");
// Setup the connection with the DB
connect = DriverManager
.getConnection("jdbc:mysql://localhost/feedback?"
+ "user=sqluser&password=sqluserpw");
我正在學習Java中的思考,其中可以使用Class.forName()獲取類
Class c = Class.forName("java.awt.Button");
是使用的語法。
我的問題是為什么MySQL ForName不需要陷入變量中?
您的意思是為什么Class
對象沒有保存到變量中。 因為不需要。 該類僅需要加載,實際的Class
對象是多余的。
同樣,這些天,您甚至不需要再執行Class.forName()
。 如果您使用的是JDBC 4類(純Java)驅動程序,將從類路徑中自動找到該驅動程序。
通過調用forName()
您可以強制初始化類(不僅僅是加載它)。 在該過程中,將運行一些靜態初始化程序,這些初始化程序將特定的類注冊到JDK中的JDBC管理器代碼中。 這使得驅動程序實例對JDK內部可用,並且在所有以后的代碼中都隱式使用它。
誠然,依靠非直覺的Reflection調用是JDBC作者的一個不好的設計,但是在Java的早期,選擇比今天少了,Java的世界並不那么艱難。 這是一種尚未引起認真采用的語言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.