【轉】ODBC、OLE DB、 ADO的區別

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   使用   io   strong   檔案   

一、ODBC

  • ODBC的由來

  1992年Microsoft和Sybase、Digital共同制定了ODBC標準介面,以單一的ODBC API來存取各種不同的資料庫。隨後ODBC便獲得了許多資料庫廠商和Third-Party的支援而逐漸成為標準的資料存取技術。ODBC以當時的業界標準規範X/OpenCall-LevelInterface(CLI)和ISO/IEC9075-3Call-LevelInterface(SQL/CLI)為涵蓋的範圍,因而支援了廣闊的資料庫。雖然ODBC在初期的版本中執行效率不佳,而且功能有限,因此也為人們所貶低。但是,隨著Microsoft不斷地改善ODBC,使ODBC的執行效率不斷增加,ODBC驅動程式的功能也日漸齊全。到目前,ODBC已經是一個穩定並且執行效率良好的資料存取引擎。

  不過ODBC僅支援關聯式資料庫,以及傳統的資料庫資料類型,並且只以C/C++語言API(API就是一些C語言的代碼,是最底層的程式,在windows中就是一些.dll的檔案)形式提供服務,因而無法符合日漸複雜的資料存取應用,也無法讓指令碼語言使用。因此Microsoft除了ODBC之外,也推出了其他的資料存取技術以滿足程式員不同的需要。(註:ODBC是面向過程的語言,由C語言開發出來,不能相容多種語言,所以開發的難度大,而且只支援有限的資料庫公司,對於後來的EXCEL等根本不能支援)

  • ODBC的介紹

  ODBC(Open Database Connectivity,開放資料庫互連)是微軟公司開放服務結構(WOSA,Windows Open Services Architecture)中有關資料庫的一個組成部分,它建立了一組規範,並提供了一組對資料庫訪問的標準API(API)。這些API利用SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支援,使用者可以直接將SQL語句送給ODBC。
  應用程式要訪問一個資料庫,首先必須用ODBC管理器註冊一個資料來源,管理器根據資料來源提供的資料庫位置、資料庫類型及ODBC驅動程式等資訊,建立起ODBC與具體資料庫的聯絡。這樣,只要應用程式將資料來源名提供給ODBC,ODBC就能建立起與相應資料庫的串連。


二、 OLE DB

  • OLE-DB的由來

  隨著資料來源日益複雜化,現今的應用程式很可能需要從不同的資料來源取得資料,加以處理,再把處理過的資料輸出到另外一個資料來源中。更麻煩的是這些資料來源可能不是傳統的關聯式資料庫,而可能是Excel檔案,Email,Internet/Intranet上的電子簽名資訊。Microsoft為了讓應用程式能夠以統一的方式存取各種不同的資料來源,在1997年提出了UniversalDataAccess(UDA)架構。UDA以COM技術為核心,協助程式員存取企業中各類不同的資料來源。UDA以OLE-DB(屬於作業系統層次的軟體)做為技術的骨架。OLE-DB定義了統一的COM介面做為存取各類異質資料來源的標準,並且封裝在一組COM對象之中。藉由OLE-DB,程式員就可以使用一致的方式來存取各種資料。但仍然OLE-DB是一個低層次的,利用效率不高。

  • OLE-DB的介紹

  OLE DB(Object Link and embed 即對象串連與嵌入。)是微軟的戰略性的通向不同的資料來源的低級應用程式介面。OLE DB不僅包括微軟資助的標準資料介面開放資料庫連通性(ODBC)的結構化問題語言(SQL)能力,還具有面向其他非SQL資料類型的通路。 作為微軟的元件物件模型(COM)的一種設計,OLE DB是一組讀寫資料的方法(在過去可能被稱為渠道)。OLD DB中的對象主要包括資料來源對象、階段對象、命令對象和行組對象。使用OLE DB的應用程式會用到如下的請求序列:初始化OLE 串連到資料來源 發出命令 處理結果 釋放資料來源對象並停止初始化OLE
  OLE DB標準中定義的新概念----OLE DB將傳統的資料庫系統劃分為多個邏輯組件,這些組件之間相對獨立又相互連信。這種組件模型中的各個部分被冠以不同的名稱:資料提供者(Data Provider)。 提供資料存放區的軟體組件,小到普通的文字檔、大到主機上的複雜資料庫,或者電子郵件儲存,都是資料提供者的例子。有的文檔把這些軟體組件的開發商也稱為資料提供者。
  我們要開啟如Access 資料庫中的資料,必須用ADO.NET透過OLE DB 來開啟。ADO.NET 利用OLE DB 來取得資料,這是因為OLE DB 瞭解如何和許多種資料來源作溝通,所以對OLE DB有相當程度的瞭解是很重要的。

  • OLE-DB 和ODBC的區別

  由於OLEDB和ODBC 標準都是為了提供統一的訪問資料介面,所以曾經有人疑惑:OLE DB 是不是替代ODBC 的新標準?答案是否定的。實際上,ODBC 標準的對象是基於SQL 的資料來源(SQL-Based Data Source),而OLE DB 的對象則是範圍更為廣泛的任何資料存放區。從這個意義上說,符合ODBC 標準的資料來源是符合OLE-DB 標準的資料存放區的子集。

三、 ADO

  • ADO的由來

  雖然OLE-DB允許程式員存取各類資料,是一個非常良好的架構,但是由於OLE-DB太底層化,而且在使用上非常複雜,需要程式員擁有高超的技巧,因此只有少數的程式員才有辦法使用OLE-DB。這讓OLE-DB無法廣為流行。為瞭解決這個問題,並且讓VB和指令碼語言也能夠藉由OLE-DB存取各種資料來源,Microsoft同樣以COM技術封裝OLE-DB為ADO對象,(這一步是很重要的,實現了多種程式可以互相調,並且可以開發的語言也豐富了)簡化了程式員資料存取的工作。由於 ADO成功地封裝了OLE-DB大部分的功能,並且大量簡化了資料存取工作,因此 ADO也逐漸被愈來愈多的程式員所接受。

  • ADO的介紹

  微軟公司的ADO (ActiveX Data Objects)是一個用於存取資料來源的COM組件。它提供了程式設計語言和統一資料訪問方式OLE DB的一個中介層。允許開發人員編寫訪問資料的代碼而不用關心資料庫是如何?的,而只用關心到資料庫的串連。訪問資料庫的時候,關於SQL的知識不是必要的,但是特定資料庫支援的SQL命令仍可以通過ADO中的命令對象來執行。
  ADO被設計來繼承微軟早期的Data Access Objects層,包括RDO (Remote DataObjects)和DAO(Data Access Objects)。ADO在1996年冬被發布。ADO包括了6個類:Connection,Command,Recordset,Errors,Parameters,Fields

  • 說說自己的理解

  說通俗點 OLE-DB和ODBC都是最底層的東西,而ADO對象給我們提供了一個“可視化”,和應用程式層直接互動的組件,我們不用過多的關注OLE-DB的內部機制,只需要瞭解ADO通過OLE-DB建立資料來源的幾種方法即可,就可以通過ADO輕鬆地擷取資料來源。可以說ADO是應用程式和資料底層的一個中介層,ADO對象通過OLE DB間接取得資料庫中的資料。OLE DB只是提供了通向各種資料庫的一個通用介面,簡單的可以用來表示:

感謝博文來源:http://blog.csdn.net/yinjingjing198808/article/details/7665577

【轉】ODBC、OLE DB、 ADO的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.