国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺析ODBC

2014-07-28 22:47郭敏
博覽群書(shū)·教育 2014年3期
關(guān)鍵詞:數(shù)據(jù)源

郭敏

摘 要:介紹了應(yīng)用程序通過(guò)ODBC訪(fǎng)問(wèn)各種數(shù)據(jù)源的核心技術(shù),研究了ODBC的結(jié)構(gòu),討論了ODBC技術(shù)和OLE DB和ADO技術(shù)關(guān)系,JAVA訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的JDBC技術(shù)。

關(guān)鍵詞:ODBC;數(shù)據(jù)源;OLD DB;ADO JDBC

數(shù)據(jù)庫(kù)技術(shù)無(wú)處不在,從最初的報(bào)表統(tǒng)計(jì)數(shù)據(jù)到現(xiàn)在的動(dòng)態(tài)網(wǎng)頁(yè)、多數(shù)據(jù)源的程序設(shè)計(jì)都有數(shù)據(jù)庫(kù)技術(shù)的影子。隨著科學(xué)技術(shù)的發(fā)展,數(shù)據(jù)庫(kù)技術(shù)自身也在不斷地發(fā)展,逐漸形成了多種成熟的數(shù)據(jù)格式,主要有:SQL Server、Access、dBase、FoxPro、Excel、Oracle以及Microsoft Text。面對(duì)這么多的數(shù)據(jù)庫(kù)格式,它們內(nèi)部結(jié)構(gòu)都分別不一樣,自然各自的訪(fǎng)問(wèn)方式也都不一樣?,F(xiàn)在,程序員不需要分別開(kāi)發(fā)面向不同數(shù)據(jù)庫(kù)格式的程序,因?yàn)镺DBC技術(shù)已為我們作好了這方面的準(zhǔn)備工作。

一、什么是ODBC

ODBC(Open Database Connectivity) 是”開(kāi)放數(shù)據(jù)庫(kù)互連”的簡(jiǎn)稱(chēng),是一種使用SQL的應(yīng)用程序接口(API),是微軟公司開(kāi)放服務(wù)結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來(lái)完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語(yǔ)言的支持,用戶(hù)可以直接將SQL語(yǔ)句送給ODBC。

一個(gè)基于ODBC的應(yīng)用程序?qū)?shù)據(jù)庫(kù)的操作不依賴(lài)任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫(kù)操作由對(duì)應(yīng)的DBMS的ODBC驅(qū)動(dòng)程序完成。也就是說(shuō),不論是FoxPro、Access還是Oracle數(shù)據(jù)庫(kù),均可用ODBC API進(jìn)行訪(fǎng)問(wèn)。由此可見(jiàn),ODBC的最大優(yōu)點(diǎn)是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫(kù),用它生成的程序與數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)引擎是無(wú)關(guān)的。ODBC可使程序員方便地編寫(xiě)訪(fǎng)問(wèn)各DBMS廠商的數(shù)據(jù)庫(kù)的應(yīng)用程序,而不需了解其產(chǎn)品的細(xì)節(jié)。

二、ODBC的結(jié)構(gòu)

一個(gè)完整的ODBC如圖1所示。

1. 應(yīng)用程序。對(duì)外提供使用者交談界面,對(duì)內(nèi)執(zhí)行資料之準(zhǔn)備工作數(shù)據(jù)庫(kù)系統(tǒng)所傳回來(lái)的結(jié)果在顯示給使用者看,它可以用支持ODBC技術(shù)的任何一門(mén)語(yǔ)言編寫(xiě)。

2.驅(qū)動(dòng)程序管理器(Driver Manager)。ODBC管理器位于Windows控制面板(Control Panel)的32位ODBC內(nèi),包含在ODBC32.DLL中,它對(duì)用戶(hù)是透明的。其任務(wù)是管理ODBC驅(qū)動(dòng)程序,是ODBC中最重要的部件。提供從主機(jī)語(yǔ)言到特定后端數(shù)據(jù)源驅(qū)動(dòng)程序的接口。

3. ODBC API。數(shù)據(jù)庫(kù)廠商為程序設(shè)計(jì)者提供的直接訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的一組函數(shù)。

4. ODBC 驅(qū)動(dòng)程序。也是一個(gè)動(dòng)態(tài)鏈接庫(kù) (DLL)。應(yīng)用程序通過(guò)調(diào)用驅(qū)動(dòng)程序所支持的函數(shù)來(lái)操縱具體的數(shù)據(jù)源。

5. 數(shù)據(jù)源。作為數(shù)據(jù)源使用的數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)服務(wù)器。ODBC數(shù)據(jù)源通過(guò)它們的數(shù)據(jù)源名稱(chēng)來(lái)引用,或者通過(guò)具體引用ODBC驅(qū)動(dòng)程序和服務(wù)器名稱(chēng)來(lái)引用。可以在 Windows 的控制面板中使用ODBC管理程序或rdoRegisterDataSource (一個(gè)ODBC API)方法來(lái)注冊(cè)命名的數(shù)據(jù)源。

應(yīng)用程序要訪(fǎng)問(wèn)一個(gè)數(shù)據(jù)庫(kù),首先必須用ODBC管理器注冊(cè)一個(gè)數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫(kù)位置、數(shù)據(jù)庫(kù)類(lèi)型及ODBC驅(qū)動(dòng)程序等信息,建立起ODBC與具體數(shù)據(jù)庫(kù)的聯(lián)系。這樣,只要應(yīng)用程序?qū)?shù)據(jù)源名提供給ODBC,ODBC就能建立起與相應(yīng)數(shù)據(jù)庫(kù)的連接。

Windows的控制面板中數(shù)據(jù)源管理器如圖2所示,用啟單擊“添加”按紐就可以添加不同格式的數(shù)據(jù)源,圖2中已添加了四種不同類(lèi)型的數(shù)據(jù)源。

在ODBC中,ODBC API不能直接訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),必須通過(guò)驅(qū)動(dòng)程序管理器與數(shù)據(jù)庫(kù)交換信息。驅(qū)動(dòng)程序管理器負(fù)責(zé)將應(yīng)用程序?qū)DBC API的調(diào)用傳遞給正確的驅(qū)動(dòng)程序,而驅(qū)動(dòng)程序在執(zhí)行完相應(yīng)的操作后,將結(jié)果通過(guò)驅(qū)動(dòng)程序管理器返回給應(yīng)用程序。

在訪(fǎng)問(wèn)ODBC數(shù)據(jù)源時(shí)需要ODBC驅(qū)動(dòng)程序的支持。ODBC是為調(diào)用關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一途徑的一類(lèi)API。

三、ODBC的發(fā)展

1. OLE DB。隨著數(shù)據(jù)源的日益多樣化,現(xiàn)今的應(yīng)用程序很可能需要從不同的數(shù)據(jù)源取得數(shù)據(jù),加以處理,再把處理過(guò)的數(shù)據(jù)輸出到另外一個(gè)數(shù)據(jù)源中。更麻煩的是這些數(shù)據(jù)源可能不是傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù),而可能是非關(guān)系型信息源,例如Email,文件系統(tǒng)存儲(chǔ),文本、圖形和地理數(shù)據(jù)以及自定義業(yè)務(wù)對(duì)象。Microsoft為了讓?xiě)?yīng)用程序能夠以統(tǒng)一的方式存取各種不同的數(shù)據(jù)源,在1997年提出了UniversalDataAccess(UDA)架構(gòu)。UDA以COM技術(shù)為核心,協(xié)助程序員存取企業(yè)中各類(lèi)不同的數(shù)據(jù)源。UDA以O(shè)LE-DB做為技術(shù)的骨架。OLE-DB定義了統(tǒng)一的COM接口做為存取各類(lèi)異質(zhì)數(shù)據(jù)源的標(biāo)準(zhǔn),對(duì)各種數(shù)據(jù)庫(kù)管理系統(tǒng)服務(wù)進(jìn)行封裝,并允許創(chuàng)建軟件組件,實(shí)現(xiàn)這些服務(wù)。OLE DB 組件包括數(shù)據(jù)提供程序(包含和表現(xiàn)數(shù)據(jù))、數(shù)據(jù)使用者(使用數(shù)據(jù))和服務(wù)組件(處理和傳送數(shù)據(jù))。OLE DB 包含了一個(gè)連接 ODBC 的“橋梁”,對(duì)現(xiàn)用的各種 ODBC 關(guān)系型數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序提供一貫的支持。但仍然OLEDB是一個(gè)低層次的,利用效率不高。

2.ADO。ADO(ActiveX Data Object)動(dòng)態(tài)數(shù)據(jù)對(duì)象。雖然OLE-DB允許程序員存取各類(lèi)數(shù)據(jù),是一個(gè)非常良好的架構(gòu),但是由于OLE-DB太底層化,而且在使用上非常復(fù)雜,需要程序員擁有高超的技巧,因此只有少數(shù)的程序員才有辦法使用OLE-DB。這讓OLE-DB無(wú)法廣為流行。為了解決這個(gè)問(wèn)題, Microsoft同樣以COM技術(shù)封裝OLE-DB為ADO對(duì)象,OLEDB處于ODBC層和應(yīng)用層之間。ADO是OLEDB上面的一種“應(yīng)用”。從而簡(jiǎn)化了程序員數(shù)據(jù)存取的工作。由于 ADO成功地封裝了OLE-DB大部分的功能,并且大量簡(jiǎn)化了數(shù)據(jù)存取工作,因此 ADO也逐漸被愈來(lái)愈多的程序員所接受。

3. JDBC

Java語(yǔ)言的普及使數(shù)據(jù)庫(kù)技術(shù)在JAVA語(yǔ)言中的應(yīng)用也迅速發(fā)展起來(lái),JDBC(Java DataBase Connectivity)是JAVA執(zhí)行SQL語(yǔ)句的Java API,JDBC定義了一個(gè)支持標(biāo)準(zhǔn)SQL功能的通用低層的應(yīng)用程式編程接口(API),他由Java 語(yǔ)言編寫(xiě)的類(lèi)和接口組成,旨在讓各數(shù)據(jù)庫(kù)研發(fā)商為Java程式員提供標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)API。JDBC API定義了若干Java中的類(lèi),表示數(shù)據(jù)庫(kù)連接、SQL指令、結(jié)果集、數(shù)據(jù)庫(kù)元數(shù)據(jù)等。他允許Java程式員發(fā)送SQL指令并處理結(jié)果。通過(guò)驅(qū)動(dòng)程式管理器,JDBC API可利用不同的驅(qū)動(dòng)程式連接不同的數(shù)據(jù)庫(kù)系統(tǒng)。

四、結(jié)束語(yǔ)

在ODBC中,應(yīng)用程序不會(huì)直接存取數(shù)據(jù)庫(kù),它必須通過(guò)管理器和數(shù)據(jù)庫(kù)交換信息。ODBC管理器負(fù)責(zé)將應(yīng)用程序的SQL語(yǔ)句及其他信息傳遞給驅(qū)動(dòng)程序,而驅(qū)動(dòng)程序則負(fù)責(zé)將運(yùn)行結(jié)果送回應(yīng)用程序,從而提供了一種不同應(yīng)用程序?qū)?shù)據(jù)庫(kù)的操作的一種規(guī)范,實(shí)現(xiàn)了程序員對(duì)具體關(guān)系型DBMS的訪(fǎng)問(wèn)的“透明性”,而ADO技術(shù)則把這種數(shù)據(jù)類(lèi)型擴(kuò)展到了非關(guān)系型數(shù)據(jù)庫(kù),并且同現(xiàn)在主流的向?qū)ο蟮木幊趟枷胍恢?,JDBC則是數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)技術(shù)應(yīng)用在JAVA語(yǔ)言中的一個(gè)典型技術(shù)。

參考文獻(xiàn):

[1](美)Kyle Geiger ODBC深入剖析[M] 電子工業(yè)出版社 1996.

[2]文必龍,邵慶開(kāi)放數(shù)據(jù)庫(kù)互聯(lián)(ODBC)技術(shù)與應(yīng)用[M] 科學(xué)出版社1997,89-113

[3]David Sceppa ADO編程技術(shù)[M] 清華大學(xué)出版社2001,21-30

[4](美)泰勒 JDBC數(shù)據(jù)庫(kù)編程與J2EE[M] 電子工業(yè)出版社 2004,37-58

[5]劉紅鑠 李曉 基于JDBC數(shù)據(jù)庫(kù)查詢(xún)和發(fā)布[J] 計(jì)算機(jī)應(yīng)用研究 2000,11

猜你喜歡
數(shù)據(jù)源
基于神經(jīng)網(wǎng)絡(luò)編碼的真值發(fā)現(xiàn)*
基于Spring Boot與MyBatis框架構(gòu)建動(dòng)態(tài)讀寫(xiě)分離模型
基于Arc Engine的數(shù)據(jù)源更新系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
Windows 7 64位平臺(tái)下Oracle ODBC的配置
基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評(píng)價(jià)研究
02C衛(wèi)星成國(guó)土資源主體業(yè)務(wù)主力數(shù)據(jù)源
基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評(píng)價(jià)算法
數(shù)據(jù)源總線(xiàn)化布局解決方案
分布式異構(gòu)數(shù)據(jù)源標(biāo)準(zhǔn)化查詢(xún)?cè)O(shè)計(jì)與實(shí)現(xiàn)