主頁 > 知識庫 > JDBCTM 指南:入門3 - DriverManager

JDBCTM 指南:入門3 - DriverManager

熱門標(biāo)簽:廣州三五防封電銷卡 外呼系統(tǒng)啥意思 電銷外呼系統(tǒng) 排行榜 山東智能云外呼管理系統(tǒng) 珠海銷售外呼系統(tǒng)運(yùn)營商 地圖標(biāo)注創(chuàng)業(yè)項(xiàng)目入駐 長春回?fù)芡夂粝到y(tǒng)廠家 地圖標(biāo)注制作道路 四川電信外呼系統(tǒng)靠譜嗎
內(nèi)容:
3 - DriverManager
3.1 概述
DriverManager 類是 JDBC 的管理層,作用于用戶和驅(qū)動程序之間。
它跟蹤可用的驅(qū)動程序,并在數(shù)據(jù)庫和相應(yīng)驅(qū)動程序之間建立連接。
另外,DriverManager 類也處理諸如驅(qū)動程序登錄時(shí)間限制及登錄和
跟蹤消息的顯示等事務(wù)。

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


3.1.1 跟蹤可用驅(qū)動程序
DriverManager 類包含一列 Driver 類,它們已通過調(diào)用方法
DriverManager.registerDriver 對自己進(jìn)行了注冊。所有 Driver
類都必須包含有一個(gè)靜態(tài)部分。它創(chuàng)建該類的實(shí)例,然后在加載該
實(shí)例時(shí) DriverManager 類進(jìn)行注冊。這樣,用戶正常情況下將不會
直接調(diào)用 DriverManager.registerDriver;而是在加載驅(qū)動程序時(shí)
由驅(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 編寫為加載時(shí)創(chuàng)建實(shí)例,并調(diào)用以該實(shí)例為
參數(shù)的 DriverManager.registerDriver(本該如此),則它在
DriverManager 的驅(qū)動程序列表中,并可用于創(chuàng)建連接。


通過將驅(qū)動程序添加到 java.lang.System 的屬性 jdbc.drivers 中
這是一個(gè)由 DriverManager 類加載的驅(qū)動程序類名的列表,由冒號
分隔:初始化 DriverManager 類時(shí),它搜索系統(tǒng)屬性 jdbc.drivers,
如果用戶已輸入了一個(gè)或多個(gè)驅(qū)動程序,則 DriverManager 類將試圖加載它們。
以下代碼說明程序員如何在 ~/.hotjava/properties 中輸入三個(gè)驅(qū)動程序類(
啟動時(shí),HotJava 將把它加載到系統(tǒng)屬性列表中):
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.test.ourDriver;

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

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

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

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


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

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

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

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

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

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

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



  
您可能感興趣的文章:
  • 通過JDBC連接oracle數(shù)據(jù)庫的十大技巧
  • JDBC連接Oracle數(shù)據(jù)庫常見問題及解決方法
  • 通過JDBC連接oracle數(shù)據(jù)庫的十大技巧
  • jdbc 數(shù)據(jù)庫的連接(sqlserver oracle)
  • sqlserverdriver配置方法 jdbc連接sqlserver
  • SQL Server 2000 Driver for JDBC Service Pack 3 安裝測試方法
  • Java開發(fā)Oracle數(shù)據(jù)庫連接JDBC Thin Driver 的三種方法

標(biāo)簽:吳忠 保定 紹興 潮州 玉樹 北海 廣元 肇慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JDBCTM 指南:入門3 - DriverManager》,本文關(guān)鍵詞  JDBCTM,指南,入門,DriverManager,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JDBCTM 指南:入門3 - DriverManager》相關(guān)的同類信息!
  • 本頁收集關(guān)于JDBCTM 指南:入門3 - DriverManager的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章