麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

JDBCTM 入門指南(3)

2019-11-18 14:31:14
字體:
供稿:網(wǎng)友

  JDBCTM 入門指南(3)

3 - DriverManager

·3.1 概述

DriverManager 類是 JDBC 的治理層,作用于用戶和驅(qū)動程序之間。它跟蹤可用的驅(qū)動程序,并在數(shù)據(jù)庫和相應(yīng)驅(qū)動程序之間建立連接。
另外,DriverManager 類也處理諸如驅(qū)動程序登錄時間限制及登錄和跟蹤消息的顯示等事務(wù)。

對于簡單的應(yīng)用程序,一般程序員需要在此類中直接使用的唯一方法是 DriverManager.getConnection。正如名稱所示,該方法將建立與
數(shù)據(jù)庫的連接。JDBC 答應(yīng)用戶調(diào)用 DriverManager 的方法getDriver、getDrivers 和 registerDriver 及 Driver 的方法connect。但多數(shù)情況下,讓 DriverManager 類治理建立連接的細節(jié)為上策。

· 3.1.1 跟蹤可用驅(qū)動程序

DriverManager 類包含一列 Driver 類,它們已通過調(diào)用方法DriverManager.registerDriver 對自己進行了注冊。所有 Driver類都必須包含有一個靜態(tài)部分。它創(chuàng)建該類的實例,然后在加載該實例時 DriverManager 類進行注冊。這樣,用戶正常情況下將不會直接調(diào)用 DriverManager.registerDriver;而是在加載驅(qū)動程序時由驅(qū)動程序自動調(diào)用。加載 Driver 類,然后自動在 DriverManager中注冊的方式有兩種:

通過調(diào)用方法 Class.forName。這將顯式地加載驅(qū)動程序類。由于這與外部設(shè)置無關(guān),因此推薦使用這種加載驅(qū)動程序的方法。以下代碼
加載類 acme.db.Driver:Class.forName("acme.db.Driver");

假如將 acme.db.Driver 編寫為加載時創(chuàng)建實例,并調(diào)用以該實例為參數(shù)的 DriverManager.registerDriver(本該如此),則它在
DriverManager 的驅(qū)動程序列表中,并可用于創(chuàng)建連接。

通過將驅(qū)動程序添加到 java.lang.System 的屬性 jdbc.drivers 中這是一個由 DriverManager 類加載的驅(qū)動程序類名的列表,由冒號
分隔:初始化 DriverManager 類時,它搜索系統(tǒng)屬性 jdbc.drivers,假如用戶已輸入了一個或多個驅(qū)動程序,則 DriverManager 類將試圖加載它們。

以下代碼說明程序員如何在 ~/.hotjava/PRoperties 中輸入三個驅(qū)動程序類(啟動時,HotJava 將把它加載到系統(tǒng)屬性列表中):

jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.test.ourDriver;

對 DriverManager 方法的第一次調(diào)用將自動加載這些驅(qū)動程序類。

注重:加載驅(qū)動程序的第二種方法需要持久的預(yù)設(shè)環(huán)境。假如對這一點不能保證,則調(diào)用方法 Class.forName 顯式地加載每個驅(qū)動程序就顯得更為安全。這也是引入特定驅(qū)動程序的方法,因為一旦 DriverManager 類被初始化,它將不再檢查 jdbc.drivers 屬性列表。

在以上兩種情況中,新加載的 Driver 類都要通過調(diào)用 DriverManager.registerDriver類進行自我注冊。如上所述,加載類時將自動執(zhí)行這一過程。

由于安全方面的原因,JDBC 治理層將跟蹤哪個類加載器提供哪個驅(qū)動程序。這樣,當 DriverManager 類打開連接時,它僅使用本地文件系統(tǒng)或與發(fā)出連接請求的代碼相同的類加載器提供的驅(qū)動程序。

· 3.1.2 建立連接

加載 Driver 類并在 DriverManager 類中注冊后,它們即可用來與數(shù)據(jù)庫建立連接。當調(diào)用 DriverManager.getConnection 方法發(fā)出連接請求時,DriverManager 將檢查每個驅(qū)動程序,查看它是否可以建立連接。

有時可能有多個 JDBC 驅(qū)動程序可以與給定的 URL 連接。例如,與給定遠程數(shù)據(jù)庫連接時,可以使用 JDBC-ODBC 橋驅(qū)動程序、JDBC 到
通用網(wǎng)絡(luò)協(xié)議驅(qū)動程序或數(shù)據(jù)庫廠商提供的驅(qū)動程序。在這種情況下測試驅(qū)動程序的順序至關(guān)重要,因為 DriverManager 將使用它所找到的第一個可以成功連接到給定 URL 的驅(qū)動程序。

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

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩电影一区二区三区 | 欧美精品欧美 | 九九热在线视频免费观看 | 国产在线精品91 | 色婷婷久久一区二区 | 欧美级毛片 | 色99久久 | 日本特级a一片免费观看 | 免费看成人毛片 | 激情综合在线观看 | 免费毛片视频播放 | 精品一区二区免费视频视频 | 9191色| a黄在线观看 | av色先锋| 亚洲乱码精品久久久久 | 中文字幕免费一区 | 中国黄色一级生活片 | 久久久av亚洲男天堂 | 久久精品国产精品亚洲 | 成人免费福利视频 | 欧美久久久一区二区三区 | 成人 日韩 | 成人做爰www免费看 欧美精品免费一区二区三区 | 欧美1区2区在线观看 | 欧美乱淫| 禁漫天堂久久久久久久久久 | 国产高潮国产高潮久久久91 | 在线播放亚洲 | 国产亚洲精品久久久久久网站 | 911网站大全在线观看 | 羞羞视频在线免费 | 国产va在线观看免费 | 成年免费视频黄网站在线观看 | 精品久久一区二区 | 久草在线手机视频 | 午夜国产小视频 | 性少妇videosexfreexx入片 | 久久精品亚洲一区 | 中文字幕一区二区三区四区 | 在线观看国产日韩 |