ADO與ADO.NET的區(qū)別與介紹
1. ADO與ADO.NET簡介
ADO與ADO.NET既有相似也有區(qū)別,他們都能夠編寫對(duì)數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)進(jìn)行訪問和操作的應(yīng)用程序,并且易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少,支持用于建立基于客戶端/服務(wù)器和 Web 的應(yīng)用程序的主要功能。但是ADO使用OLE DB接口并基于微軟的COM技術(shù),而ADO.NET擁有自己的ADO.NET接口并且基于微軟的.NET體系架構(gòu)。眾所周知.NET體系不同于COM體系,ADO.NET接口也就完全不同于ADO和OLE DB接口,這也就是說ADO.NET和ADO是兩種數(shù)據(jù)訪問方式。
2. 數(shù)據(jù)訪問方式的歷史
下面簡單的回顧一下微軟的數(shù)據(jù)訪問方式所走過的幾個(gè)階段。
ODBC – (Open Database Connectivity)是第一個(gè)使用SQL訪問不同關(guān)系數(shù)據(jù)庫的數(shù)據(jù)訪問技術(shù)。使用ODBC應(yīng)用程序能夠通過單一的命令操縱不同的數(shù)據(jù)庫,而開發(fā)人員需要做的僅僅只是針對(duì)不同的應(yīng)用加入相應(yīng)的ODBC驅(qū)動(dòng)。
DAO - (Data Access Objects)不像ODBC那樣是面向C/C++程序員的,它是微軟提供給Visual Basic開發(fā)人員的一種簡單的數(shù)據(jù)訪問方法,用于操縱Access數(shù)據(jù)庫。
RDO – 在使用DAO訪問不同的關(guān)系型數(shù)據(jù)庫的時(shí)候,Jet引擎不得不在DAO和ODBC之間進(jìn)行命令的轉(zhuǎn)化,導(dǎo)致了性能的下降,而RDO(Remote Data Objects)的出現(xiàn)就順理成章了。
OLE DB – 隨著越來越多的數(shù)據(jù)以非關(guān)系型格式存儲(chǔ),需要一種新的架構(gòu)來提供這種應(yīng)用和數(shù)據(jù)源之間的無縫連接,基于COM(Component Object Model)的OLE DB應(yīng)運(yùn)而生了。
ADO – 基于OLE DB之上的ADO更簡單、更高級(jí)、更適合Visual Basic程序員,同時(shí)消除了OLE DB的多種弊端,取而代之是微軟技術(shù)發(fā)展的趨勢。

ADO架構(gòu)圖表
3. ADO與ADO.NET對(duì)照
在開始設(shè)計(jì).NET體系架構(gòu)時(shí),微軟就決定重新設(shè)計(jì)數(shù)據(jù)訪問模型,以便能夠完全的基于XML和離線計(jì)算模型。兩者的區(qū)別主要有:
ADO以Recordset存儲(chǔ),而ADO.NET則以DataSet表示。Recordset看起來更像單表,如果讓Recordset以多表的方式表示就必須在SQL中進(jìn)行多表連接。反之,DataSet可以是多個(gè)表的集合。ADO 的運(yùn)作是一種在線方式,這意味著不論是瀏覽或更新數(shù)據(jù)都必須是實(shí)時(shí)的。ADO.NET則使用離線方式,在訪問數(shù)據(jù)的時(shí)候ADO.NET會(huì)利用XML制作數(shù)據(jù)的一份幅本,ADO.NET的數(shù)據(jù)庫連接也只有在這段時(shí)間需要在線。
由于ADO使用COM技術(shù),這就要求所使用的數(shù)據(jù)類型必須符合COM規(guī)范,而ADO.NET基于XML格式,數(shù)據(jù)類型更為豐富并且不需要再做COM編排導(dǎo)致的數(shù)據(jù)類型轉(zhuǎn)換,從而提高了整體性能。
下面就是以圖表的形式描繪了ADO.NET體系

ADO.NET架構(gòu)圖表
4. 小結(jié)
ADO.NET為.NET構(gòu)架提供了優(yōu)化的數(shù)據(jù)訪問模型,和基于COM的ADO是完全兩樣的數(shù)據(jù)訪問方式。
相關(guān)文章
部署ASP.NET?Core程序到Linux系統(tǒng)
這篇文章介紹了部署ASP.NET?Core程序到Linux系統(tǒng)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
.Net行為型設(shè)計(jì)模式之職責(zé)鏈模式(Chain of Responsibility)
這篇文章介紹了.Net行為型設(shè)計(jì)模式之職責(zé)鏈模式(Chain of Responsibility),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
三種方法解決ASP.NET?Core?6中的依賴項(xiàng)
這篇文章主要介紹了解決ASP.NET?Core?6依賴項(xiàng)的三種方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2021-11-11
ASP.NET創(chuàng)建三層架構(gòu)圖解詳細(xì)教程
本文以圖片的形式完整演示了創(chuàng)建三層架構(gòu)的完整步驟,簡單實(shí)用,希望能給大家一些幫助。2016-04-04
ASP.NET中CheckBoxList復(fù)選框列表控件詳細(xì)使用方法
本文主要介紹CheckBoxList幾種常見的用法,并做出范例演示供大家參考,希望對(duì)學(xué)習(xí)asp.net的朋友有所幫助。2016-04-04
C#列出局域網(wǎng)中可用SQL Server服務(wù)器(續(xù))
上一篇文章展示了使用COM對(duì)象如何列出局域網(wǎng)中的 SQL Server服務(wù)器信息,后來還發(fā)現(xiàn)在.Net中有現(xiàn)成的類可用,而不需要使用不太熟悉的COM對(duì)象了,這樣豈不是更好?下面我把代碼展示給大家:2008-04-04

