簡體   English   中英

在JDBC中使用class.forName

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM