ODBC、OLE DB、 ADO的区别
一、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利用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,程序員就可以使用一致的方式來存取各種數據。但仍然OLEDB是一個低層次的,利用效率不高。
- 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被設計來繼承微軟早期的數據訪問對象層,包括RDO (Remote DataObjects)和DAO(Data Access Objects)。ADO在1996年冬被發布。
ADO包括了6個類:Connection,Command,Recordset,Errors,Parameters,Fields
- 說說自己的理解
說通俗點 OLE DB和ODBC都是最底層的東西,而ADO對象給我們提供了一個“可視化”,和應用層直接交互的組件,我們不用過多的關注OLEDB的內部機制,只需要了解ADO通過OLE DB創建數據源的幾種方法即可,就可以通過ADO輕松地獲取數據源。可以說ADO是應用程序和數據底層的一個中間層,ADO對象通過OLE DB間接取得數據庫中的數據。OLE DB只是提供了通向各種數據庫的一個通用接口,簡單的可以用下圖來表示:
?
出處:http://blog.csdn.net/yinjingjing198808/article/details/7665577
轉載于:https://www.cnblogs.com/sthinker/p/5915290.html
總結
以上是生活随笔為你收集整理的ODBC、OLE DB、 ADO的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux (centos 8.1)生产
- 下一篇: country-converter官方文