- 相關(guān)推薦
全面了解ODBC技術(shù)
目前,眾多的廠(chǎng)商推出了行行色色的數據庫系統,它們在性能、價(jià)格和應用范圍上各有千秋。一個(gè)綜合信息系統的各部門(mén)由于需求差異等原因,往往會(huì )存在多種數據庫,它們之間的互連訪(fǎng)問(wèn)成為一個(gè)棘手的問(wèn)題,特別是當用戶(hù)需要從客戶(hù)機端訪(fǎng)問(wèn)不同的服務(wù)器時(shí)。微軟提出的開(kāi)放式數據庫互連(Open-DataBase-Connectivity,即ODBC)成為目前一個(gè)強有力解決方案,并逐步成為Windows和Macintosh平臺上的標準接口,并推動(dòng)了這方面的開(kāi)放性和標準化。
一、ODBC的產(chǎn)生和發(fā)展
關(guān)系型數據庫產(chǎn)生后很快就成為數據庫系統的主流產(chǎn)品,由于每個(gè)DBMS廠(chǎng)商都有自己的一套標準,人們很早就產(chǎn)生了標準化的想法,于是產(chǎn)生了SQL,由于其語(yǔ)法規范逐漸為人所接受,成為RDBMS上的主導語(yǔ)言。最初,各數據庫廠(chǎng)商為了解決互連的問(wèn)題,往往提供嵌入式SQL API,用戶(hù)在客戶(hù)機端要操作系統中的RDBMS時(shí),往往要在程序中嵌入SQL語(yǔ)句進(jìn)行預編譯。由于不同廠(chǎng)商在數據格式、數據操作、具體實(shí)現甚至語(yǔ)法方面都具有不同程度的差異,所以彼此不能兼容。
長(cháng)期以來(lái),這種API的非規范情況令用戶(hù)和RDBMS廠(chǎng)商都不能滿(mǎn)意。在80年代后期,一些著(zhù)名的廠(chǎng)商包括Oracle、Sybase、Lotus、Ingres、Informix、HP、DEC等結成了SQL Access Group(簡(jiǎn)稱(chēng)SAG),提出了SQL API的規范核心:調用級接口(Call Level Interface),簡(jiǎn)稱(chēng)CLI。
1991年11月,微軟宣布了ODBC,次年推出可用版本。1992年2月,推出了ODBC SDK 2.0版。ODBC基于SAG的SQL CAE草案所規定的語(yǔ)法,共分為Core、Level 1、 Level 2三種定義,分別規范了22、16、13共51條命令,其中29條命令甚至超越了SAG CLI中原有的定義,功能強大而靈活。它還包括標準的錯誤代碼集、標準的連接和登錄DBMS方法、標準的數據類(lèi)型表示等。
由于ODBC思想上的先進(jìn)性,且沒(méi)有同類(lèi)的標準或產(chǎn)品與之競爭,它一枝獨秀,推出后僅僅兩三年就受到了眾多廠(chǎng)家與用戶(hù)的青睞,成為一種廣為接受的標準。目前,已經(jīng)有130多家獨立廠(chǎng)商宣布了對ODBC的支持,常見(jiàn)的DBMS都提供了ODBC的驅動(dòng)接口,這些廠(chǎng)商包括Oracle、Sybase、Informix、Ingres、IBM(DB/2)、DEC(RDB)、HP(ALLBASE/SQL)、Gupta、Borland(Paradox)等。目前,ODBC已經(jīng)成為客戶(hù)機/服務(wù)器系統中的一個(gè)重要支持技術(shù)。
二、ODBC的基本思想與特點(diǎn)
ODBC的基本思想是為用戶(hù)提供簡(jiǎn)單、標準、透明的數據庫連接的公共編程接口,開(kāi)發(fā)廠(chǎng)商根據ODBC的標準去實(shí)現底層的驅動(dòng)程序,這個(gè)驅動(dòng)對用戶(hù)是透明的,并允許根據不同的DBMS采用不同的技術(shù)加以?xún)?yōu)化實(shí)現,這就利于不斷吸收新的技術(shù)而趨完善。
這同時(shí)也就是數據庫驅動(dòng)的思想,它很類(lèi)似于Windows中打印驅動(dòng)的思想。在Windows中,用戶(hù)安裝不同的打印驅動(dòng)程序,使用同樣一條打印語(yǔ)句或操作,就可很容易地實(shí)現在不同打印機上打印輸出,而不需要了解內部的具體原理。ODBC出現以后,用戶(hù)安裝不同的DBMS驅動(dòng)就可用同樣的SQL語(yǔ)句實(shí)現在不同DBMS上進(jìn)行同樣的操作,而且無(wú)需預編譯。ODBC帶來(lái)了數據庫連接方式的變革,如圖1所示。在傳統方式中,開(kāi)發(fā)人員要熟悉多個(gè)DBMS及其API,一旦DBMS端出現變動(dòng),則往往導致用戶(hù)端系統重新編建或者源代碼的修改,這給開(kāi)發(fā)和維護工作帶來(lái)了很大困難。在ODBC方式中,不管底層網(wǎng)絡(luò )環(huán)境如何,也無(wú)論采用何種DBMS,用戶(hù)在程序中都使用同一套標準代碼,無(wú)需逐個(gè)了解各DBMS及其API的特點(diǎn),源程序不因底層的變化而重新編建或修改,從而減輕了開(kāi)發(fā)維護的工作量,縮短了開(kāi)發(fā)周期。
@@12W03500.GIF;圖1 數據庫連接方式的轉變@@
概括起來(lái),ODBC具有以下靈活的特點(diǎn):
1. 使用戶(hù)程序有很高的互操作性,相同的目標代碼適用于不同的DBMS;
2. 由于ODBC的開(kāi)放性,它為程序集成提供了便利,為客戶(hù)機/服務(wù)器結構提供了技術(shù)支持;
3. 由于應用與底層網(wǎng)絡(luò )環(huán)境和DBMS分開(kāi),簡(jiǎn)化了開(kāi)發(fā)維護上的困難。
三、ODBC的體系結構和實(shí)現
ODBC是依靠分層結構來(lái)實(shí)現的,如此可保證其標準性和開(kāi)放性。圖2所示為ODBC的體系結構,它共分為四層:應用程序、驅動(dòng)程序管理器、驅動(dòng)程序和數據源。微軟公司對ODBC規程進(jìn)行了規范,它為應用層的開(kāi)發(fā)者和用戶(hù)提供標準的函數、語(yǔ)法和錯誤代碼等,微軟還提供了驅動(dòng)程序管理器,它在Windows中是一個(gè)動(dòng)態(tài)鏈接庫即ODBC.DLL。驅動(dòng)程序層由微軟、DBMS廠(chǎng)商或第三開(kāi)發(fā)商提供,它必須符合ODBC的規程,對于Oracle,它是ORA6WIN.DLL,對于SQL Server,它是SQLSRVR.DLL。
@@12W03501.GIF;圖2 ODBC體系結構@@
下面我們詳細介紹各層的功能。
1. 應用程序層(Application)
使用ODBC接口的應用程序可執行以下任務(wù):
①請求與數據源的連接和會(huì )話(huà)(SQLConnect);
②向數據源發(fā)送SQL請求(SQLExecDirct或SQLExecute);
③對SQL請求的結果定義存儲區和數據格式;
④請求結果;
⑤處理錯誤;
⑥如果需要,把結果返回給用戶(hù);
⑦對事務(wù)進(jìn)行控制,請求執行或回退操作(SQLTransact);
⑧終止對數據源的連接(SQLDisconnect)。
2. 驅動(dòng)程序管理器(Driver Manager)
由微軟提供的驅動(dòng)程序管理器是帶有輸入庫的動(dòng)態(tài)連接庫ODBC.DLL,其主要目的是裝入驅動(dòng)程序,此外還執行以下工作:
①處理幾個(gè)ODBC初始化調用;
②為每一個(gè)驅動(dòng)程序提供ODBC函數入口點(diǎn);
③為ODBC調用提供參數和次序驗證。
3. 驅動(dòng)程序(Driver)
驅動(dòng)程序是實(shí)現ODBC函數和數據源交互的DLL,當應用程序調用SQL Connect或者SQLDriver Connect函數時(shí),驅動(dòng)程序管理器裝入相應的驅動(dòng)程序,它對來(lái)自應用程序的ODBC函數調用進(jìn)行應答,按照其要求執行以下任務(wù):
①建立與數據源的連接;
②向數據源提交請求;
③在應用程序需求時(shí),轉換數據格式;
④返回結果給應用程序;
⑤將運行錯誤格式化為標準代碼返回;
⑥在需要時(shí)說(shuō)明和處理光標。
以上這些功能都是對應用程序層功能的具體實(shí)現。驅動(dòng)程序的配置方式
【全面了解ODBC技術(shù)】相關(guān)文章:
網(wǎng)絡(luò )電話(huà)技術(shù)簡(jiǎn)單全面介紹03-12
運用價(jià)值工程全面推動(dòng)建筑業(yè)技術(shù)與經(jīng)濟工作03-24
Delphi 5 數據庫應用中ODBC數據源的自動(dòng)管理03-18
談企業(yè)全面預算管理03-18
舞劇創(chuàng )作需要全面反思03-18