JDBCTM 指南:入門3 - DriverManager
2020-06-01 23:26:50
供稿:網友
內容:
3 - DriverManager
3.1 概述
DriverManager 類是 JDBC 的管理層,作用于用戶和驅動程序之間。
它跟蹤可用的驅動程序,并在數據庫和相應驅動程序之間建立連接。
另外,DriverManager 類也處理諸如驅動程序登錄時間限制及登錄和
跟蹤消息的顯示等事務。
對于簡單的應用程序,一般程序員需要在此類中直接使用的唯一方法
是 DriverManager.getConnection。正如名稱所示,該方法將建立與
數據庫的連接。JDBC 允許用戶調用 DriverManager 的方法
getDriver、getDrivers 和 registerDriver 及 Driver 的方法
connect。但多數情況下,讓 DriverManager 類管理建立連接的細
節為上策。
3.1.1 跟蹤可用驅動程序
DriverManager 類包含一列 Driver 類,它們已通過調用方法
DriverManager.registerDriver 對自己進行了注冊。所有 Driver
類都必須包含有一個靜態部分。它創建該類的實例,然后在加載該
實例時 DriverManager 類進行注冊。這樣,用戶正常情況下將不會
直接調用 DriverManager.registerDriver;而是在加載驅動程序時
由驅動程序自動調用。加載 Driver 類,然后自動在 DriverManager
中注冊的方式有兩種:
通過調用方法 Class.forName。這將顯式地加載驅動程序類。由于這
與外部設置無關,因此推薦使用這種加載驅動程序的方法。以下代碼
加載類 acme.db.Driver:
Class.forName("acme.db.Driver");
如果將 acme.db.Driver 編寫為加載時創建實例,并調用以該實例為
參數的 DriverManager.registerDriver(本該如此),則它在
DriverManager 的驅動程序列表中,并可用于創建連接。
通過將驅動程序添加到 java.lang.System 的屬性 jdbc.drivers 中
這是一個由 DriverManager 類加載的驅動程序類名的列表,由冒號
分隔:初始化 DriverManager 類時,它搜索系統屬性 jdbc.drivers,
如果用戶已輸入了一個或多個驅動程序,則 DriverManager 類將試圖加載它們。
以下代碼說明程序員如何在 ~/.hotjava/properties 中輸入三個驅動程序類(
啟動時,HotJava 將把它加載到系統屬性列表中):
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.test.ourDriver;
對 DriverManager 方法的第一次調用將自動加載這些驅動程序類。
注意:加載驅動程序的第二種方法需要持久的預設環境。如果對這一點不能
保證,則調用方法 Class.forName 顯式地加載每個驅動程序就顯得更為
安全。這也是引入特定驅動程序的方法,因為一旦 DriverManager 類被初始化,它
將不再檢查 jdbc.drivers 屬性列表。
在以上兩種情況中,新加載的 Driver 類都要通過調用 DriverManager.registerDriver
類進行自我注冊。如上所述,加載類時將自動執行這一過程。
由于安全方面的原因,JDBC 管理層將跟蹤哪個類加載器提供哪