學(xué)習(xí)一項(xiàng)技術(shù)汉形,首先我們要了解它的歷史概疆,這樣我們才能更透徹地理解它的用途届案。所以楣颠,接下來我將介紹微軟數(shù)據(jù)庫連接技術(shù)的發(fā)展歷程咐蚯。
上圖中矫膨,我們可以看到五個(gè)關(guān)鍵詞ODBC,OLE DB危尿,DAO谊娇,RAO罗晕,ADO小渊,我們來一個(gè)個(gè)介紹:
ODBC(Open Database Connectivity):它定義了訪問數(shù)據(jù)庫API的一個(gè)規(guī)范,這些API獨(dú)立于不同廠商的DBMS酬屉,也獨(dú)立于具體的編程語言(但是Microsoft的ODBC文檔是用C語言描述的呐萨,許多實(shí)際的ODBC驅(qū)動(dòng)程序也是用C語言寫的凹髓。)
OLE DB(Object Linking and Embedding,對象連接與嵌入赌躺,簡稱OLE技術(shù)):ODBC只支持關(guān)系型數(shù)據(jù)庫礼患,但隨著技術(shù)的發(fā)展,我們還需要訪問非關(guān)系型數(shù)據(jù)庫以及文件等虏冻,所以O(shè)DBC已不能滿足我們的需求领曼。這時(shí)OLE DB就橫空出世了毁渗,OLE DB不僅具有ODBC的結(jié)構(gòu)化查詢語言(SQL)能力,還具有面向其他非SQL數(shù)據(jù)類型的通路细溅。
ODBC與OLE DB的區(qū)別:ODBC 標(biāo)準(zhǔn)的對象是基于SQL 的數(shù)據(jù)源(SQL-Based Data Source)恍风,而OLE DB 的對象則是范圍更為廣泛的任何數(shù)據(jù)存儲(chǔ)朋贬。從這個(gè)意義上說窜骄,符合ODBC 標(biāo)準(zhǔn)的數(shù)據(jù)源是符合OLE DB 標(biāo)準(zhǔn)的數(shù)據(jù)存儲(chǔ)的子集糠亩。
DAO(Data Access Objects):DAO是基于Microsoft Jet Database Engine之上的一套面向?qū)ο蟮捏w系赎线,可以訪問Microsoft Access或dBase等桌面文件型數(shù)據(jù)庫,或者ODBC滞项。(主要用來訪問Access數(shù)據(jù)庫)
RDO(Remote Data Objects):是一個(gè)到 ODBC 的蓖扑、面向?qū)ο蟮臄?shù)據(jù)訪問接口潭流,它同易于使用的 DAO style組合在一起柜去,提供了一個(gè)接口嗓奢,形式上展示出所有 ODBC 的底層功能和靈活性根盒。盡管 RDO 在很好地訪問 Jet 或 ISAM 數(shù)據(jù)庫方面受到限制物蝙,而且它只能通過現(xiàn)存的 ODBC 驅(qū)動(dòng)程序來訪問關(guān)系數(shù)據(jù)庫诬乞。(用來跨越網(wǎng)絡(luò)訪問數(shù)據(jù))
ADO(ActiveX Data Objects):由于OLE-DB太底層化森瘪,而且在使用上非常復(fù)雜票堵,為了解決這個(gè)問題痰驱,Microsoft同樣以COM技術(shù)封裝OLE-DB為ADO對象,大量簡化了數(shù)據(jù)存取工作蝇完。ADO被設(shè)計(jì)來替代微軟早期的數(shù)據(jù)訪問對象層(包括RDO和DAO)短蜕。ADO在1996年8月與OLE DB一起被發(fā)布。
ADO.NET:ADO.NET是微軟在.NET Framework中負(fù)責(zé)數(shù)據(jù)訪問的類庫集孙援,它是使用在COM時(shí)代奠基的OLE DB技術(shù)以及.NET Framework的類庫和編程語言來發(fā)展的扇雕,它可以讓.NET上的任何編程語言能夠連接并訪問關(guān)系數(shù)據(jù)庫與非數(shù)據(jù)庫型數(shù)據(jù)源(例如XML础淤,Excel或是文字檔數(shù)據(jù))鸽凶,或是獨(dú)立出來作為處理應(yīng)用程序數(shù)據(jù)的類別對象玻侥。
許多人將ADO.NET視為ADO的下一個(gè)版本,但其實(shí)它是一個(gè)全新的架構(gòu)、產(chǎn)品與概念砚蓬。
參考文獻(xiàn):
《ODBC灰蛙、OLE DB摩梧、 ADO的區(qū)別》
《三種連接方式:RDO DAO ADO》
維基百科