[轉帖]ODBC、OLEDB、ADO、ADO.NET

一文詳解ODBC、OLEDB、ADO、ADO.NET之間的關係

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 https://blog.csdn.net/qq_27825451/article/details/86515141

相信看到這篇文章的人,心中確定有這樣的想法:ODBC、OLEDB、ADO、ADO.NET貌似都是訪問數據庫的東東,那麼他們之間有什麼區別,又有什麼聯繫呢?不要着急,待我慢慢道來。html

1、ODBC

ODBC(Open Database Connectivity,開放數據庫互連)。程序員

ODBC,官方的定義是這樣的,開放數據庫互連(ODBC)是MICROSOFT提出的數據庫訪問接口標準。ODBC(Open DatabaseConnectivity,開放數據庫互連)提供了一種標準的API(應用程序編程接口)方法來訪問數據庫管理系統(DBMS)。這些API利用SQL來完成其大部分任務。ODBC自己也提供了對SQL語言的支持,用戶能夠直接將SQL語句送給ODBC。ODBC的設計者們努力使它具備最大的獨立性和開放性:與具體的編程語言無關,與具體的數據庫系統無關,與具體的操做系統無關。sql

簡單說一下個人理解,從本質上說,ODBC是一種標準,而這些全部的標準實際上是一系列的接口。那麼這一標準要完成什麼工做呢?打個比方,咱們把sql Server、Sybase、Oracle等數據庫比做是一個個的大水箱,每一個水箱都有一個出水口,但不一樣水箱出水口的形狀不同,sql Server 的多是三角形的,Sybase的多是正方形的,而程序員若是須要使用水箱中的水(須要從數據庫中取數據),就必須使用與之想對應的水管,好比使用sql Server水箱中的水,就必須用三角口的水管,而用Sybase水箱的時候就得用正方形的水管,這無疑給編程人員帶來了麻煩。因而,微軟制定了ODBC這麼一個標準,要求不論是什麼水箱,最後的出水口必須是圓形的,程序員只要有一根圓形的水管,就能夠取到任意水箱中的水。至於不一樣水箱如何把出水口轉變成圓形的,這不是咱們編程人員的事,是你水箱的事。因而乎,各個水箱都開發了這麼一根水管,一頭形狀是本身水箱口的形狀,另外一頭是標準的圓形。好比sql Server,它就須要有一根一頭是三角形,一頭是圓形的水管。而這根特殊的水管映射到程序界就是所謂的ODBC驅動。有了ODBC這一標準,各個水箱中的水還能夠被使用,與此同時,使用者也方便了許多,皆大歡喜。數據庫

2、OLEDB

OLE DB(Object Linking and Embedding, Database,對象鏈接嵌入數據庫)編程

再說OLEDB,OLEDB(ObjectLinking and Embedding,Database,又稱爲OLE DB或OLE-DB),一個基於COM的數據存儲對象,能提供對全部類型的數據的操做,甚至能在離線的狀況下存取數據(比方說,你使用的是你的便攜機,你能夠絕不費力地看到最後一次數據同步時的數據映像).網絡

好吧,說實話,關於OLEDB我也木有真正體會到它的魅力之所在,不過能夠確定的是,它比ODBC功能更強大,使用更方便。它依賴於ODBC,是在ODBC之上的一次封裝。暫時就這麼理解吧。架構

3、ADO

ADO(ActiveX Data Object,活動數據對象)框架

至於ADO,ADO (ActiveXDataObjects)是一個用於訪問數據源的COM組件。它提供了編程語言和統一數據訪問方式OLE DB的一箇中間層。容許開發人員編寫訪問數據的代碼而不用關心數據庫是如何實現的,而只用關心到數據庫的鏈接。訪問數據庫的時候,關於SQL的知識不是必要的,可是特定數據庫支持的SQL命令仍能夠經過ADO中的命令對象來執行。編程語言

說道ADO,可謂是後起之秀啊,其實,在它以前,出現過DAO和RDO,ide

DAO(Data Access Object,數據訪問對象)
RDO(Remote Data Objects,遠程數據對象)

但隨着ADO的推出,它成爲在Windows NT 4.0和Windows 2000操做系統上開發數據庫應用程序的首選。它將對象模型統一化,改由數據庫廠商發展數據提供者(data provider,這個模式在此時奠定),從這點來講,貌似它跟ODBC功能相似,可是,它是創建在ODBC和OLEDB之上的又一次封裝。並且ADO自己則是與數據源無關 (data source independent) 的開發方法,這讓它迅速的得到了使用ASP與Visual Basic開發人員的青睞,順利取代DAO與RDO等模型。

純語言的描述可能不太直觀,讓你們看一張圖片。

簡單給你們解釋一下,最上面的是咱們編寫的程序,最下面的是數據庫,而中間的就是今天的主要內容——一些數據庫訪問技術。從第二部分咱們能夠看出,ODBC位於數據訪問的最底層,OLEDB次之,ADO位於最上層。咱們的應用程序能夠經過三種方式訪問數據庫,分別是

(1)應用程序——ODBC——數據庫,

(2)應用程序——OLEDB——ODBC——數據庫,

(3)應用程序——ADO——OLEDB——ODBC——數據庫。

到此爲止,ODBC、OLEDB、ADO三者的關係應該清楚了。

4、ADO.NET

最後所ADO.NET,ADO雖然是比較成功的產品,但ADO自己的架構仍然有缺陷,尤爲是在開發網絡應用程序時,Recordset沒法脫機,嚴重影響了網絡應用的開發。因而在1998年時,微軟提出了一個下一代的應用程序開發框架 (Application Framework) 的計劃。很榮幸,ADO.NET被包含在此計劃以內,它引入了脫機型數據模型的概念,成功解決了ADO所不能及的問題。許多人將ADO.NET視爲ADO的下一個版本,但其實它是一個全新的架構、產品概念。具體的ADO.NET介紹,參見詳解ADO.NET相關的文檔

5、總結

ODBC 、DAO 、ADO 、OLEDB 數據庫鏈接方式區別及聯繫

ODBC 是一種底層的訪問技術,所以,ODBC API 能夠是客戶應用程序能從底層設置和控制數據庫,完成一些高級數據庫技術沒法完成的功能;但不足之處因爲ODBC只能用於關係型數據庫,使得利用ODBC很難訪問對象數據庫及其餘非關係數據庫。

DAO 提供了一種經過程序代碼建立和操縱數據庫的機制。最大特色是對MICROSOFT JET數據庫的操做很方便,並且是操做JET數據庫時性能最好的技術接口之一。而且它並不僅能用於訪問這種數據庫,事實上,經過DAO技術能夠訪問從文本文件到大型後臺數據庫等多種數據格式。

ADO 是基於OLE DB的訪問接口,它是面向對象的OLE DB技術,繼承了OLE DB的優勢。屬於數據庫訪問的高層接口。


名詞解釋:

ODBC(Open DataBase Connectivity)開放數據庫互聯。是由微軟主導的數據庫連接標準。

MFC(Microsoft Foundation Class)微軟基礎類。MFC ODBC是對ODBC的封裝。

DAO(Data Access Object)數據訪問對象。不提供遠程訪問功能。

RDO(Remote Data Object)遠程數據對象。速度快,支持SQL Server存儲過程,同DAO同樣是發展不少年了的技術。

OLE-DB(Object Linking and Embedding DataBase)對象連接和嵌入數據庫。它依賴於COM和提供OLE DB提供者的廠商而非ODBC使用的SQL。

ADO(ActiveX Data Object)ActiveX數據對象。基於OLE-DB創建鏈接的局部和遠程數據庫訪問技術。同OLE-DB同樣要「年輕」些。

使用中,咱們通常用OLE-DB和ADO替代DAO和RDO。

相關文章
相關標籤/搜索