一、ODBC(Open DataBase Connectivity : 開放數據庫連接)
ODBC 總體結構
應用程序
執行處理並調用odbc函數,提交sql語句並檢索結果
Driver Manager
管理應用程序和驅動程序之間的通訊,根據應用程序加載並卸載驅動程序,
處理odbc函數調用,獲把它們傳送到驅動程序
驅動程序
處理odbc函數調用,把sql語句提交到數據源,並返回結果到應用程序,如有必要,
驅動程序修改一個應用程序請求,以使請求與相關的DBMS支持的語法一致
數據源
用戶要訪問的DBMS,以及相關os
Application
|
|
Driver Manager
| | |
| | |
驅動程序 驅動程序 驅動程序
| | |
數據源 數據源 數據源
結合現實的高層開發工作流程如下:
1.數據應用系統首先獲得在ODBC數據源管理器中建立的DSN(存儲了與數據提供程序連接的詳細信息包含數據庫位置、數據庫類型及相應的ODBC驅動程序等),然后 Driver Manager依賴一種叫做數據庫獨立的交流(Database Indepedent Communications Technology)的技術與數據源建立聯系(其中涉及客戶端和服務器端多種Agent對象的問題,詳情不敘,可參見下圖).
2.Driver Mangaer調用特定ODBC驅動程序將ODBC標准API轉化為適用於具體數據庫系統的函數調用(數據庫特征不同之處也在這里翻譯如SQL語法差異等),然后經由客戶端的Request Agent發送到數據源.
3.數據源Database Agent處理操作,將結果返回到客戶端的Request Agent,再向上經Driver(這里會有翻譯和標准化錯誤碼的行為)、Driver Mangaer返回給Application.
需要說明的是定義和操作光標、維護事務、負責任何與訪問數據源的必要軟件層進行交互(包括與底層網絡或文件系統接口的軟件)等行為亦由驅動程序完成.
結合ODBC API調用順序描敘工作流程:初始化(分配環境--->分配連接句柄--->與服務器連接--->分配語句句柄)-------->SQL處理(語句處理和檢索部分)-------->終止(釋放語句句柄--->與服務器斷開--->釋放連接句柄--->釋放環境).
二、JDBC(Java DataBase Connectivity : Java數據庫連接)
JDBC設計很多借鑒於ODBC:
1.JDBC與ODBC都是基於X/Open的SQL調用級接口
2.JDBC很多設計思想沿襲了ODBC,包括許多抽象和SQL CLI實現
3.JDBC的總體結構類似於ODBC,有四個組件:應用程序、驅動程序管理器、驅動程序和數據源,工作原 理亦大體同於ODBC.
1.JDBC保持了ODBC的基本特性,也獨立於特定數據庫.
2.使用相同源代碼的應用程序通過動態加載不同的JDBC驅動程序,可以訪問不同的DBMS.連接不同的 DBMS時,各個DBMS之間僅通過不同的URL進行標識.
3.JDBC的DatabaseMetaData接口提供了一系列方法,可以檢查DBMS對特定特性的支持,並相應確定有什 么特性,從而能對特定數據庫的特性予以支持
4.JDBC也支持在應用程序中同時建立多個數據庫連接,采用JDBC可以很容易地用SQL語句同時訪問多個 異構的數據庫,為異構的數據庫之間的互操作奠定基礎
Java的驅動解決方案有四種:1.JDBC-ODBC Bridge 2.本機API/集團式Java驅動程序 3.網絡協議/全Java 4.本機協議/全Java