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

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

JDBCTM 入門指南(3)

2019-11-18 14:31:14
字體:
來源:轉載
供稿:網友

  JDBCTM 入門指南(3)

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 的驅動程序。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 慈利县| 尉犁县| 盐城市| 德钦县| 崇明县| 宕昌县| 高要市| 左权县| 柞水县| 渭南市| 阿克苏市| 绵竹市| 江口县| 平凉市| 宣武区| 石泉县| 云安县| 西平县| 前郭尔| 罗源县| 东兰县| 义乌市| 彝良县| 平陆县| 辽阳市| 万宁市| 南川市| 嘉义县| 永和县| 彭阳县| 承德县| 文昌市| 浦城县| 三门县| 会昌县| 高要市| 翁源县| 墨脱县| 哈密市| 新津县| 翁源县|