ADO,OLEDB,ODBC,DAO,RDO等之間的區(qū)別
很多Access VB網(wǎng)友總是對(duì) ADO,OLEDB,ODBC,DAO,RDO 的區(qū)別和關(guān)系有些糊涂和困感,這篇文章給大家闡述它們之間的區(qū)別和聯(lián)系。
ODBC(Open Database Connectivity,開(kāi)放數(shù)據(jù)庫(kù)互連) 1992年,微軟公司開(kāi)放服務(wù)結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來(lái)完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語(yǔ)言的支持,用戶可以直接將SQL語(yǔ)句送給ODBC。---出現(xiàn)的最早,但不總是萬(wàn)能。
DAO(Data Access Object,數(shù)據(jù)訪問(wèn)對(duì)象) 1993年,微軟公司用來(lái)顯露了Microsoft Jet數(shù)據(jù)庫(kù)引擎(最早是給Microsoft Access 所使用,現(xiàn)在已經(jīng)支持其它數(shù)據(jù)庫(kù)),并允許開(kāi)發(fā)者通過(guò)ODBC直接連接到其他數(shù)據(jù)庫(kù)一樣,直接連接到 Access 表。DAO 最適用于單系統(tǒng)應(yīng)用程序或在小范圍本地分布使用。其內(nèi)部已經(jīng)對(duì)Jet數(shù)據(jù)庫(kù)的訪問(wèn)進(jìn)行了加速優(yōu)化,而且其使用起來(lái)也是很方便的。所以如果數(shù)據(jù)庫(kù)是Access數(shù)據(jù)庫(kù)且是本地使用的話,建議使用這種訪問(wèn)方式---應(yīng)用的專一性
RDO(Remote Data Objects,遠(yuǎn)程數(shù)據(jù)對(duì)象) 1995年,RDO是一個(gè)到ODBC的、面向?qū)ο蟮臄?shù)據(jù)訪問(wèn)接口,它同易于使用的DAO style組合在一起,提供了一個(gè)接口,形式上展示出所有ODBC的底層功能和靈活性。盡管RDO在很好地訪問(wèn)Jet或ISAM數(shù)據(jù)庫(kù)方面受到限制,而且它只能通過(guò)現(xiàn)存的ODBC驅(qū)動(dòng)程序來(lái)訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)。但是,RDO已被證明是許多SQL Server、Oracle 以及其他大型關(guān)系數(shù)據(jù)庫(kù)開(kāi)發(fā)者經(jīng)常選用的最佳接口。RDO提供了用來(lái)訪問(wèn)存儲(chǔ)過(guò)程和復(fù)雜結(jié)果集的更多和更復(fù)雜的對(duì)象、屬性,以及方法。---無(wú)疑是在odbc基礎(chǔ)上的
OLE DB(Object Linking and Embedding, Database,對(duì)象連接嵌入數(shù)據(jù)庫(kù)) 1997年, Microsoft 的一個(gè)戰(zhàn)略性系統(tǒng)級(jí)編程接口,用于管理整個(gè)組織內(nèi)的數(shù)據(jù)。OLE DB 是建立在 ODBC 功能之上的一個(gè)開(kāi)放規(guī)范。ODBC 是為訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)而專門(mén)開(kāi)發(fā)的,OLE DB 則用于訪問(wèn)關(guān)系型和非關(guān)系型信息源,例如主機(jī) ISAM/VSAM 和層次數(shù)據(jù)庫(kù),電子郵件和文件系統(tǒng)存儲(chǔ),文本、圖形和地理數(shù)據(jù)以及自定義業(yè)務(wù)對(duì)象。 OLE DB 定義了一組 COM 接口,對(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ù),例如,查詢處理器和游標(biāo)引擎)。
OLE DB 接口有助于平滑地集成組件,這樣,OLE DB 組件廠商就可以快速地向市場(chǎng)提供高質(zhì)量 OLE DB 組件。此外,OLE DB 包含了一個(gè)連接 ODBC 的“橋梁”,對(duì)現(xiàn)用的各種 ODBC 關(guān)系型數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序提供一貫的支持。---號(hào)稱取代odbc,但也兼容odbc
ADO(ActiveX Data Object,活動(dòng)數(shù)據(jù)對(duì)象) 1996年,ADO是DAO/RDO的后繼產(chǎn)物。ADO 2.0在功能上與RDO更相似,而且一般來(lái)說(shuō),在這兩種模型之間有一種相似的映射關(guān)系。ADO"擴(kuò)展"了DAO和 RDO 所使用的對(duì)象模型,這意味著它包含較少的對(duì)象、更多的屬性、方法(和參數(shù)),以及事件。 作為最新的數(shù)據(jù)庫(kù)訪問(wèn)模式,ADO的使用也是簡(jiǎn)單易用,所以微軟已經(jīng)明確表示今后把重點(diǎn)放在ADO上,對(duì)DAO/RDO不再作升級(jí),所以ADO已經(jīng)成為了當(dāng)前數(shù)據(jù)庫(kù)開(kāi)發(fā)的主流。 ADO涉及的數(shù)據(jù)存儲(chǔ)有DSN(數(shù)據(jù)源名稱)、ODBC(開(kāi)放式數(shù)據(jù)連接)以及OLE DB三種方式。后面的例程將詳細(xì)講解這三種方式的具體訪問(wèn)實(shí)現(xiàn)。---可以說(shuō)是對(duì)odbc,oledb這些系統(tǒng)級(jí)的編程接口的匯接,并對(duì)DAO,RDO這些應(yīng)用級(jí)的編程接口的升級(jí)吧。 ODBC 、DAO 、ADO 、OLEDB 數(shù)據(jù)庫(kù)連接方式區(qū)別及聯(lián)系 ODBC 是一種底層的訪問(wèn)技術(shù),因此,ODBC API 可以是客戶應(yīng)用程序能從底層設(shè)置和控制數(shù)據(jù)庫(kù),完成一些高級(jí)數(shù)據(jù)庫(kù)技術(shù)無(wú)法完成的功能;但不足之處由于ODBC只能用于關(guān)系型數(shù)據(jù)庫(kù),使得利用ODBC很難訪問(wèn)對(duì)象數(shù)據(jù)庫(kù)及其他非關(guān)系數(shù)據(jù)庫(kù)。 DAO 提供了一種通過(guò)程序代碼創(chuàng)建和操縱數(shù)據(jù)庫(kù)的機(jī)制。最大特點(diǎn)是對(duì)MICROSOFT JET數(shù)據(jù)庫(kù)的操作很方便,而且是操作JET數(shù)據(jù)庫(kù)時(shí)性能最好的技術(shù)接口之一。并且它并不只能用于訪問(wèn)這種數(shù)據(jù)庫(kù),事實(shí)上,通過(guò)DAO技術(shù)可以訪問(wèn)從文本文件到大型后臺(tái)數(shù)據(jù)庫(kù)等多種數(shù)據(jù)格式。 ADO 是基于OLE DB的訪問(wèn)接口,它是面向?qū)ο蟮腛LE DB技術(shù),繼承了OLE DB的優(yōu)點(diǎn)。屬于數(shù)據(jù)庫(kù)訪問(wèn)的高層接口。
![]()
名詞解釋:
ODBC(Open DataBase Connectivity)開(kāi)放數(shù)據(jù)庫(kù)互聯(lián)。是由微軟主導(dǎo)的數(shù)據(jù)庫(kù)鏈接標(biāo)準(zhǔn)。 MFC(Microsoft Foundation Class)微軟基礎(chǔ)類(lèi)。MFC ODBC是對(duì)ODBC的封裝。 DAO(Data Access Object)數(shù)據(jù)訪問(wèn)對(duì)象。不提供遠(yuǎn)程訪問(wèn)功能。 RDO(Remote Data Object)遠(yuǎn)程數(shù)據(jù)對(duì)象。速度快,支持SQL Server存儲(chǔ)過(guò)程,同DAO一樣是發(fā)展很多年了的技術(shù)。 OLE-DB(Object Linking and Embedding DataBase)對(duì)象鏈接和嵌入數(shù)據(jù)庫(kù)。它依賴于COM和提供OLE DB提供者的廠商而非ODBC使用的SQL。 ADO(ActiveX Data Object)ActiveX數(shù)據(jù)對(duì)象;贠LE-DB建立連接的局部和遠(yuǎn)程數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。同OLE-DB一樣要“年輕”些。 使用中,我們一般用OLE-DB和ADO替代DAO和RDO。
ADO和OLEDB之間的關(guān)系 OLEDB是一種底層數(shù)據(jù)訪問(wèn)界面接口。是用于第三方驅(qū)動(dòng)程序商家開(kāi)發(fā)輸出數(shù)據(jù)源到ADO-技術(shù)的應(yīng)用程序或用于C++的開(kāi)發(fā)者開(kāi)發(fā)定制的數(shù)據(jù)庫(kù)組件。 OLE DB 是用于訪問(wèn)數(shù)據(jù)的重要的系統(tǒng)級(jí)編程接口,它是 ADO 的基礎(chǔ)技術(shù),同時(shí)還是 ADO.NET 的數(shù)據(jù)源。ADO 是基于OLE DB的訪問(wèn)接口,它是面向?qū)ο蟮腛LE DB技術(shù),繼承了OLE DB的優(yōu)點(diǎn)。屬于數(shù)據(jù)庫(kù)訪問(wèn)的高層接口。 可以這么說(shuō),ADO為OLEDB提供高層應(yīng)用API函數(shù)。 各種數(shù)據(jù)接口的連接方式 一、ADO連接
1、連接access數(shù)據(jù)庫(kù)
set conn=Server.CreateObject("ADODB.Connection")
conn.open "Driver={Microsoft Access Driver (*.mdb)};dbq="&Server.Mappath("dbname(路徑全名)")
2、連接SQL Server數(shù)據(jù)庫(kù)
set conn=server.CreateObject("ADODB.Connection")
sql="Driver={SQL Server};server=(local);uid=sa;pwd=sa;database=dbname"
conn.open(sql)
二、ODBC連接(必須先注冊(cè)數(shù)據(jù)源---DSN)
(列舉配置SQL Server數(shù)據(jù)庫(kù)文件DSN,打開(kāi)管理工具---數(shù)據(jù)源(ODBC)---打開(kāi)系統(tǒng)DSN選項(xiàng)卡---單擊添加按鈕---從列表中選擇SQL Server,單擊完成---在名稱中輸入數(shù)據(jù)庫(kù)名稱,在你想連接的SQL Server服務(wù)器中輸入(local)---按向?qū)崾就瓿?
1、連接access數(shù)據(jù)庫(kù)
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=注冊(cè)名"
2、連接SQL Server數(shù)據(jù)庫(kù)
set conn=Server.CreateObject("ADODB.Connection")
conn.connectionstring="DSN=注冊(cè)名;UID=sa WD=sa;"
conn.open
三、OLEDB連接數(shù)據(jù)庫(kù)
1、連接access數(shù)據(jù)庫(kù)
set conn=Server.CreateObject("ADODB.Connection")
conn.open " rovider=Microsoft.Jet.OLEDB.4.0;Data Source="&server.MapPath("dbname(路徑全名)")&" ersist Security Info=False"
set rs=Server.CreateObject("ADODB.Recordset")
2、連接SQL Server數(shù)據(jù)庫(kù)
set conn=server.CreateObject("ADODB.Connection")
sql="Provider=SQLOLEDB;data source=(local);initial catalog=dbname;User ID=sa;password=sa;"
conn.open(sql)
摘自IT-Homer
|