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的開放性奠基了基礎。 函數

----數據庫獨立性 spa

----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上的異構數據庫訪問中發揮重要的做用。

相關文章
相關標籤/搜索