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

首頁 > 學院 > 開發(fā)設計 > 正文

JDBC系列教程(二)---驅(qū)動設置

2019-11-18 13:58:37
字體:
供稿:網(wǎng)友

  本文出自: www.dukejava.com 作者:javaduke

DriverManager
本概述摘自《JDBCTM Database access from JavaTM: A Tutorial and Annotated Reference》,目前正由 JavaSoft 繼續(xù)編寫。這本書既是 JDBC 的教程,也是一本權(quán)威性參考手冊,將作為 Java 系列的一部分在 1997 年春季由 Addison-Wesley 出版公司出版。

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

對于簡單的應用程序,一般程序員需要在此類中直接使用的唯一方法是 DriverManager.getConnection。正如名稱所示,該方法將建立與數(shù)據(jù)庫的連接。JDBC 答應用戶調(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ū)動程序類。由于這與外部設置無關(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ū)動程序的第二種方法需要持久的預設環(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)絡協(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ū)動程序。

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

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

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加載驅(qū)動程序
String url = "jdbc:odbc:fred";
DriverManager.getConnection(url, "userID", "passwd");

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品视频在 | 人人看人人舔 | 国产精品999在线 | 国产一区二区三区手机在线 | 国产一级毛片不卡 | 国产1区2区3区中文字幕 | 4399一级成人毛片 | 久草成人在线 | 国产99免费 | 日本在线视频免费 | 日本精品黄色 | 欧美特黄a | 久久精品亚洲精品国产欧美kt∨ | 中国的免费的视频 | 一级α片免费看刺激高潮视频 | 欧美成人一区二区视频 | 久草资源在线观看 | 欧美77 | 欧美www | 欧产日产国产精品乱噜噜 | 久草在线网址 | 欧美人人干 | 久久福利剧场 | 欧美毛片 | 精品国产一区二区三区天美传媒 | 成人精品久久久 | 免费观看黄色片视频 | 国产精品久久久久久久久久久久久久久 | hdjapanesemassagehd日本 | 麻豆蜜桃在线观看 | 久久久www视频 | 日韩精品免费看 | 4p嗯啊巨肉寝室调教男男视频 | wwwxxx国产 | 亚洲成人在线免费观看 | 欧美亚洲国产成人 | 欧美黄色大片免费观看 | 中文字幕一二区 | 久久91精品国产91久久yfo | 久久精品视频亚洲 | av免费提供 |