国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JDBC概述(三)

2019-11-18 16:22:17
字體:
來源:轉載
供稿:網友

  出自:linuxaid.com.cn 2002年11月14日 09:34
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 管理層將跟蹤哪個類加載器提供哪個驅動程序。這樣,當 DriverManager 類打開連接時,它僅使用本地文件系統或與發出連接請求的代碼相同的類加載器提供的驅動程序。

3.1.2 建立連接

加載 Driver 類并在 DriverManager 類中注冊后,它們即可用來與數據庫建立連接。當調用 DriverManager.getConnection 方法發出連接請求時,DriverManager 將檢查每個驅動程序,查看它是否可以建立連接。有時可能有多個 JDBC 驅動程序可以與給定的 URL 連接。例如,與給定遠程數據庫連接時,可以使用 JDBC-ODBC 橋驅動程序、JDBC 到通用網絡協議驅動程序或數據庫廠商提供的驅動程序。在這種情況下測試驅動程序的順序至關重要,因為 DriverManager 將使用它所找到的第一個可以成功連接到給定 URL 的驅動程序。

首先 DriverManager 試圖按注冊的順序使用每個驅動程序(jdbc.drivers 中列出的驅動程序總是先注冊)。它將跳過代碼不可信任的驅動程序,除非加載它們的源與試圖打開連接的代碼的源相同。

它通過輪流在每個驅動程序上調用方法 Driver.connect,并向它們傳遞用戶開始傳遞給方法 DriverManager.getConnection 的 URL 來對驅動程序進行測試,然后連接第一個認出該 URL 的驅動程序。

這種方法初看起來效率不高,但由于不可能同時加載數十個驅動程序,因此每次連接實際只需幾個過程調用和字符串比較。

以下代碼是通常情況下用驅動程序(例如 JDBC-ODBC 橋驅動程序)建立連接所需所有步驟的示例:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加載驅動程序
String url = "jdbc:odbc:fred";
DriverManager.getConnection(url, "userID", "passwd");進入討論組討論。

>(出處:http://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东阳市| 积石山| 沂水县| 丰都县| 石首市| 台北市| 西和县| 长武县| 清新县| 图们市| 屏东市| 崇义县| 于田县| 尚志市| 烟台市| 安仁县| 武邑县| 辽宁省| 九龙城区| 宁化县| 中西区| 山丹县| 红桥区| SHOW| 盐源县| 黄冈市| 陵川县| 泾源县| 阳新县| 肇东市| 西吉县| 上虞市| 尖扎县| 凌源市| 兴和县| 江西省| 芜湖市| 呼玛县| 台东市| 菏泽市| 横峰县|