當前位置:首頁 » 數據倉庫 » jdbc為什麼能訪問多個資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

jdbc為什麼能訪問多個資料庫

發布時間: 2023-03-01 19:00:36

㈠ 具體說明JDBC連接資料庫與ODBC連接數據的區別

異構資料庫系統是由多個異構的成員資料庫系統組成的資料庫系統,異構性體現為各個成員資料庫之間在硬體平台、操作系統或資料庫管理系統等方面的不同。 ----Internet上大量信息必須通過資料庫系統才能有效管理。由於歷史等原因,Internet上的資料庫系統不少是異構的。為了在Internet環境下,基於異種系統平台實現對異構資料庫的查詢和聯合使用,必須提供一個獨立於特定的資料庫管理系統的統一編程界面。 ----目前許多資料庫系統均支持sql,對於由SQL資料庫組成的異構資料庫系統, JDBC和ODBC為訪問其異構成員提供了統一的方式,也為各異構成員之間的協作和多個成員之上的操作打下了基礎。本文簡單介紹了JDBC和ODBC對各個異構的資料庫進行統一訪問和協作的原理及其應用。 ODBC ----ODBC(Open DataBase Connectivity)是微軟倡導的、當前被業界廣泛接受的、用於資料庫訪問的應用程序編程介面(API),它以X/Open和 ISO/IEC的調用級介面(CLI)規范為基礎,並使用結構化查詢語言(SQL)作為其資料庫訪問語言。 ODBC總體結構有四個組件: ----· 應用程序 執行處理並調用ODBC API函數,以提交 SQL語句並檢索結果。 ----· 驅動程序管理器(Driver Manager) 根據應用程序需要載入/卸載驅動程序,處理ODBC函數調用,或把它們傳送到驅動程序。 ----· 驅動程序 處理ODBC函數調用,提交SQL請求到一個指定的數據源,並把結果返回到應用程序。如果有必要,驅動程序修改一個應用程序請求,以使請求與相關的DBMS支持的語法一致。 ----· 數據源 包括用戶要訪問的數據及其相關的操作系統、DBMS及用於訪問DBMS的網路平台。 ----ODBC驅動程序的使用把應用程序從具體的資料庫調用中隔離開來,驅動程序管理器針對特定資料庫的各個驅動程序進行集中管理,並向應用程序提供統一的標准介面,這就為ODBC的開放性奠定了基礎。 ----資料庫獨立性 ----ODBC是為最大的互用性而設計的,要求一個應用程序有用相同的源代碼(不用重新編譯或重新鏈接)訪問不同的資料庫管理系統(DBMS)的能力。 ----ODBC定義了一個標準的調用層介面(CLI)。這包含 X/Open和ISO/IEC的CLI規范中的所有函數,並提供應用程序普遍需要的附加函數。每個支持ODBC的DBMS需要不同的庫或驅動程序,驅動程序實現ODBC API中的函數。當需要改變驅動程序時,應用程序不需要重新編譯或者重新鏈接,只是動態載入新的驅動程序,並調用其中的函數即可。如果要同時訪問多個 DBMS系統,應用程序可載入多個驅動程序。如何支持驅動程序取決於操作系統,例如,在Windows操作系統上,驅動程序是動態鏈接庫(DLL)。 ----使用相同源代碼的應用程序訪問不同的DBMS,體現了 ODBC的資料庫獨立性。 ----對資料庫特殊功能的支持 ----各個DBMS參照的標准、提供的功能不盡相同,應用程序如何以統一的介面使用各個DBMS特有的功能呢? ----一方面,ODBC為所有DBMS功能都定義了公共介面。這些DBMS功能比多數DBMS支持的更多,但只要求驅動程序實現這些功能的一個子集。另一方面,ODBC定義了API和SQL語法一致層,它規定驅動程序應支持的基本功能。 ODBC還提供兩個函數(SQLGetInfo和SQLGetFunctions)返回關於驅動程序和DBMS能力的一般信息及驅動程序支持的函數列表。因此,應用程序可以檢查DBMS支持的特殊功能。 ----這樣,編寫應用程序時,就可以檢查並自動使用各個驅動程序對應的DBMS所支持的特殊功能。這樣做的優點是當增加DBMS支持的功能時,應用程序不需要改變,只需安裝更新的驅動程序,應用程序便可以自動發現並使用這些功能。 ----互操作能力 ----通過使用多個驅動程序可以同時訪問多個DBMS系統。 ODBC提供的Driver Manager實現所有的ODBC函數,多數是傳遞調用給驅動程序中的ODBC 函數,並靜態鏈接應用程序,或在應用程序運行時載入它。這樣,應用程序在Driver Manager 中按名調用驅動ODBC函數,而不是通過每個驅動程序中的指針。當應用程序需要通過特定的驅動程序時,它首先需要一個標識驅動程序的連接句柄。Driver Manager載入驅動程序,並存儲每個驅動程序中的函數地址。要使驅動程序調用一個ODBC函數,可在應用程序調用 Driver Manager中的函數,並為驅動程序傳送連接句柄,然後Driver Manager使用以前存儲的地址來調用函數。 ----ODBC可以同時連接到多個DBMS,解決了同時訪問多個DBMS的問題,提供了異構成員資料庫之間互操作的能力。 JDBC ----JDBC(Java DataBase Connectivity)是Java與資料庫的介面規范,JDBC定義了一個支持標准SQL功能的通用低層的應用程序編程介面(API),它由Java 語言編寫的類和介面組成,旨在讓各資料庫開發商為Java程序員提供標準的資料庫API。 JDBC API定義了若干Java中的類,表示資料庫連接、SQL指令、結果集、資料庫元數據等。它允許Java程序員發送SQL指令並處理結果。通過驅動程序管理器,JDBC API可利用不同的驅動程序連接不同的資料庫系統。 ----JDBC與ODBC都是基於X/Open的SQL調用級介面, JDBC的設計在思想上沿襲了ODBC,同時在其主要抽象和SQL CLI實現上也沿襲了ODBC,這使得JDBC容易被接受。JDBC的總體結構類似於ODBC,也有四個組件:應用程序、驅動程序管理器、驅動程序和數據源。 ----JDBC保持了ODBC的基本特性,也獨立於特定資料庫。使用相同源代碼的應用程序通過動態載入不同的JDBC驅動程序,可以訪問不同的DBMS。連接不同的DBMS時,各個DBMS之間僅通過不同的URL進行標識。JDBC的 DatabaseMetaData介面提供了一系列方法,可以檢查DBMS對特定特性的支持,並相應確定有什麼特性,從而能對特定資料庫的特性予以支持。與ODBC一樣,JDBC也支持在應用程序中同時建立多個資料庫連接,採用JDBC可以很容易地用SQL語句同時訪問多個異構的資料庫,為異構的資料庫之間的互操作奠定基礎。 ----但是,JDBC除了具有ODBC的上述特點外,更具有對硬體平台、操作系統異構性的支持。這主要是因為ODBC使用的是C語言,而JDBC使用的是Java語言。Java語言具有與平台無關、移植性強、安全性高、穩定性好、分布式、面向對象等眾多優點,而JDBC確保了「100%純Java」的解決方案,利用Java的平台無關性, JDBC應用程序可以自然地實現跨平台特性,因而更適合於Internet上異構環境的資料庫應用。 ----此外,JDBC驅動程序管理器是內置的,驅動程序本身也可通過Web瀏覽器自動下載,無須安裝、配置;而ODBC驅動程序管理器和ODBC驅動程序必須在每台客戶機上分別安裝、配置。 JDBC和ODBC在Internet上的應用 ----JDBC和ODBC由於具有資料庫獨立性甚至平台無關性,因而對Internet上異構資料庫的訪問提供了很好的支持。 ----在Internet上訪問資料庫通常採用三層模式。以JDBC為例,在三層模 式中客戶端的Java Applet主要作為用戶界面,它不直接與資料庫交換信息,而是通過自定義的應用層網路協議與應用伺服器交互,應用伺服器通過JDBC與資料庫伺服器交換信息,並實現應用邏輯。DM3的JDBC和ODBC驅動程序支持目前流行的ASP和JSP技術,可以分別藉助ODBC和JDBC同時訪問Internet 上多個異構的資料庫。 ----ASP是面向Web伺服器的技術,客戶端瀏覽器不需要任何附加的軟體支持。ASP使用VBScript之類的腳本語言,它在HTML代碼中嵌入某種程序代碼,由HTML代碼負責描述信息的顯示樣式,由嵌入的程序代碼來描述處理邏輯。在ASP 下,VBScript代碼被ASP引擎在Web伺服器端解釋執行,執行結果被重新嵌入到HTML代碼中,然後一起發送給瀏覽器。這里,VBScript代碼可以通過ODBC訪問多個異構的資料庫。 ----JSP是一種基於Java Servlet的Web開發技術,它和ASP 非常相似,但又有區別:在JSP下,嵌入HTML頁面的程序代碼是Java代碼;頁面中嵌入的程序代碼被編譯成Servlet(這種編譯操作僅在對JSP頁面的第一次請求時發生)並由Java 虛擬機執行。這里Java代碼可以通過JDBC訪問多個異構的資料庫,其平台無關性特別好。當前,Internet上的資料庫應用已越來越多,JDBC和ODBC必將在Internet上的異構資料庫訪問中發揮重要的作用。 本文來自CSDN博客,轉載請標明出處: http://blog.csdn.net/superdont/archive/2007/05/12/1605563.aspx 來源:( http://blog.sina.com.cn/s/blog_5736f0910100dm4j.html ) - 【轉】資料庫中odbc和jdbc的區別_在路上_新浪博客

㈡ 在Java中使用jdbc動態鏈接多個在不同伺服器上的資料庫,該怎麼做

1. 根據不同的資料庫載入不同的驅動:Driver = Class.forName()...; DriverManager
2. 根據資料庫的參數,建立不同的鏈接:DriverManager.getConnection()...
3. 定義一個數據結構(比如類),來管理這些不同的鏈接.
4. 最後使用這些鏈接來操作資料庫.

㈢ 用Java編寫一般應用程序,怎麼實現在一個事務中訪問了多種類型資料庫。

我測試了用jdbc獲得多個connection連接,可以實現,其實和連接一個資料庫是一樣的。
1、注冊資料庫驅動
2、用driverMagager獲得資料庫連接
3、獲得connection之後就可以對資料庫進行操作了

對於需求,其實也是比較容易實現的。只要對於多個要commit的地方,加到同一個try塊中,就可以了。
只要一個資料庫存儲出錯,就會跳出該try,之後再 catch中執行對所以資料庫的rollback。
類似:
try{
以上對於資料庫的操作代碼略
.......................
conn1.commit();
conn2.commit();
conn3.commit();
//其中只要其中一個執行存儲出錯,就會跳到catch中,執行rollback,所以不要存儲一個就commit一次,要一起commit 。
}catch(Exception e){
conn1.rollback();
conn2.rollback();
conn3.rollback();
}finall{
conn1.close();
conn2.close();
conn3.close();
}
主要就是對於執行成功的存儲不要立刻就執行commit操作,這樣如果之後的資料庫出錯就無法rollback成功的那個了。
我們等到所以對於資料庫的操作都執行完畢後,再一起執行commit,如果其中那個出錯也不至於過早的commit,而無法rollback了。

㈣ JDBC的工作原理是什麼

JDBC是Sun公司制定的一個可以用Java語言連接資料庫的技術。
JDBC工作原理主要分3個步驟:1、載入資料庫驅動。2、獲取資料庫連接。3、發送sql語句訪問資料庫 。
1、載入數據驅動:使用Class.forName方法,調用這個方法會載入資料庫驅動com.MySQL.jdbc.driver。
關於資料庫驅動的理解,其實是sun公司給了一個Driver的介面,然後各個數據廠商根據自己的資料庫
來實現這個介面。當要訪問資料庫的時候,需要引入這個第三方類庫。類的載入主要分為5個部分,
載入、驗證、准備、解析、初始化。在初始化的部分用到了DriverManager.registerDriver()方法,將
自己注冊給DriverManager的Driver介面。這個地方體現了多態。這個時候就可以使用Driver了。
2、獲取資料庫連接DriverManager.getConnection()。這個方法主要調用driver的connect()方法
返回一個實現了Connection介面的對象。
3、然後利用Connection對象創建Statement,發送sql語句訪問資料庫。
延伸:JDBC基礎知識

JDBC(Java DataBase Connectivity,java資料庫連接)是一種用於執行SQL語句的Java API,可以為多種關系資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。JDBC為資料庫開發人員提供了一個標準的API,據此可以構建更高級的工具和介面,使資料庫開發人員能夠用純 Java API 編寫資料庫應用程序,並且可跨平台運行,並且不受資料庫供應商的限制。
1、跨平台運行:這是繼承了Java語言的「一次編譯,到處運行」的特點;
2、不受資料庫供應商的限制:巧妙在於JDBC設有兩種介面,一個是面向應用程序層,其作用是使得開發人員通過SQL調用資料庫和處理結果,而不需要考慮資料庫的提供商;另一個是驅動程序層,處理與具體驅動程序的交互,JDBC驅動程序可以利用JDBC API創建Java程序和數據源之間的橋梁。應用程序只需要編寫一次,便可以移到各種驅動程序上運行。Sun提供了一個驅動管理器,資料庫供應商——如MySQL、Oracle,提供的驅動程序滿足驅動管理器的要求就可以被識別,就可以正常工作。所以JDBC不受資料庫供應商的限制。
JDBC API可以作為連接Java應用程序與各種關系資料庫的紐帶,在帶來方便的同時也有負面影響,以下是JDBC的優、缺點。優點如下:

· 操作便捷:JDBC使得開發人員不需要再使用復雜的驅動器調用命令和函數;
· 可移植性強:JDBC支持不同的關系資料庫,所以可以使同一個應用程序支持多個資料庫的訪問,只要載入相應的驅動程序即可;
· 通用性好:JDBC-ODBC橋接驅動器將JDBC函數換成ODBC;
· 面向對象:可以將常用的JDBC資料庫連接封裝成一個類,在使用的時候直接調用即可。
缺點如下:
· 訪問數據記錄的速度受到一定程度的影響;
· 更改數據源困難:JDBC可支持多種資料庫,各種資料庫之間的操作必有不同,這就給更改數據源帶來了很大的麻煩