Jcat
          寵辱不驚,閑看庭前花開(kāi)花落~~
          posts - 173,comments - 67,trackbacks - 0
          一、ODBC
          ODBC(Open Database Connectivity,開(kāi)放數(shù)據(jù)庫(kù)互連)是微軟公司開(kāi)放服務(wù)結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用 SQL來(lái)完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語(yǔ)言的支持,用戶(hù)可以直接將SQL語(yǔ)句送給ODBC。

          應(yīng)用程序要訪(fǎng)問(wèn)一個(gè)數(shù)據(jù)庫(kù),首先必須用ODBC管理器注冊(cè)一個(gè)數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫(kù)位置、數(shù)據(jù)庫(kù)類(lèi)型及ODBC驅(qū)動(dòng)程序等信息,建立起ODBC與具體數(shù)據(jù)庫(kù)的聯(lián)系。這樣,只要應(yīng)用程序?qū)?shù)據(jù)源名提供給ODBC,ODBC就能建立起與相應(yīng)數(shù)據(jù)庫(kù)的連接。


          二、OLE DB
          1.? Object Linking and Embedding,對(duì)象連接與嵌入,簡(jiǎn)稱(chēng)OLE技術(shù)。OLE不僅是桌面應(yīng)用程序集成,而且還定義和實(shí)現(xiàn)了一種允許應(yīng)用程序作為軟件“對(duì)象”(數(shù)據(jù)集合和操作數(shù)據(jù)的函數(shù))彼此進(jìn)行“連接”的機(jī)制,這種連接機(jī)制和協(xié)議稱(chēng)為部件對(duì)象模型(Component Object Model),簡(jiǎn)稱(chēng)COM。OLE可以用來(lái)創(chuàng)建復(fù)合文檔,復(fù)合文檔包含了創(chuàng)建于不同源應(yīng)用程序,有著不同類(lèi)型的數(shù)據(jù),因此它可以把文字、聲音、圖像、表格等組合在一起。

          對(duì)象鏈接和嵌入。在客戶(hù)應(yīng)用程序間傳輸和共享信息的一組綜合標(biāo)準(zhǔn)。允許創(chuàng)建帶有指向應(yīng)用程序的鏈接的混合文檔以使用戶(hù)修改時(shí)不必在應(yīng)用程序間切換的協(xié)議。 OLE基于組件對(duì)象模型(COM) 并允許開(kāi)發(fā)可在多個(gè)應(yīng)用程序間互操作的可復(fù)用即插即用對(duì)象。該協(xié)議已廣泛用于商業(yè)上,在商業(yè)中電子表格、字處理程序、財(cái)務(wù)軟件包和其他應(yīng)用程序可以通過(guò)客戶(hù)/服務(wù)器體系共享和鏈接單獨(dú)的信息

          2.? OLE DB(OLEDB)是微軟的戰(zhàn)略性的通向不同的數(shù)據(jù)源的低級(jí)應(yīng)用程序接口。OLE DB不僅包括微軟資助的標(biāo)準(zhǔn)數(shù)據(jù)接口開(kāi)放數(shù)據(jù)庫(kù)連通性(ODBC)的結(jié)構(gòu)化問(wèn)題語(yǔ)言(SQL)能力,還具有面向其他非SQL數(shù)據(jù)類(lèi)型的通路。作為微軟的組件對(duì)象模型(COM)的一種設(shè)計(jì),OLE DB是一組讀寫(xiě)數(shù)據(jù)的方法(在過(guò)去可能被稱(chēng)為渠道)。OLD DB中的對(duì)象主要包括數(shù)據(jù)源對(duì)象、階段對(duì)象、命令對(duì)象和行組對(duì)象。使用OLE DB的應(yīng)用程序會(huì)用到如下的請(qǐng)求序列: 初始化OLE 連接到數(shù)據(jù)源發(fā)出命令 處理結(jié)果 釋放數(shù)據(jù)源對(duì)象并停止初始化OLE

          OLE DB標(biāo)準(zhǔn)中定義的新概念----OLE DB將傳統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng)劃分為多個(gè)邏輯組件,這些組件之間相對(duì)獨(dú)立又相互通信。這種組件模型中的各個(gè)部分被冠以不同的名稱(chēng):數(shù)據(jù)提供者(Data Provider)。提供數(shù)據(jù)存儲(chǔ)的軟件組件,小到普通的文本文件、大到主機(jī)上的復(fù)雜數(shù)據(jù)庫(kù),或者電子郵件存儲(chǔ),都是數(shù)據(jù)提供者的例子。有的文檔把這些軟件組件的開(kāi)發(fā)商也稱(chēng)為數(shù)據(jù)提供者。

          我們要開(kāi)啟如Access 數(shù)據(jù)庫(kù)中的數(shù)據(jù),必須用ADO.NET 透過(guò)OLE DB 來(lái)開(kāi)啟。ADO.NET 利用OLE DB 來(lái)取得數(shù)據(jù),這是因?yàn)镺LE DB 了解如何和許多種數(shù)據(jù)源作溝通,所以對(duì)OLE DB有相當(dāng)程度的了解是很重要的。


          三、ADO
          微軟公司的ADO (ActiveX Data Objects) 是一個(gè)用于存取數(shù)據(jù)源的COM組件。它提供了編程語(yǔ)言和統(tǒng)一數(shù)據(jù)訪(fǎng)問(wèn)方式OLE DB的一個(gè)中間層。允許開(kāi)發(fā)人員編寫(xiě)訪(fǎng)問(wèn)數(shù)據(jù)的代碼而不用關(guān)心數(shù)據(jù)庫(kù)是如何實(shí)現(xiàn)的,而只用關(guān)心到數(shù)據(jù)庫(kù)的連接。訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的時(shí)候,關(guān)于SQL的知識(shí)不是必要的,但是特定數(shù)據(jù)庫(kù)支持的SQL命令仍可以通過(guò)ADO中的命令對(duì)象來(lái)執(zhí)行。

          ADO被設(shè)計(jì)來(lái)繼承微軟早期的數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象層,包括RDO (Remote Data Objects) 和DAO(Data Access Objects)。ADO在1996年冬被發(fā)布。
          ADO是VB6推薦操作數(shù)據(jù)庫(kù)的方式。


          四、區(qū)別和關(guān)系
          ODBC最先出來(lái),是用來(lái)連接oracle、sql server、access等數(shù)據(jù)庫(kù)的一種接口標(biāo)準(zhǔn)(后來(lái)隨著各廠(chǎng)商的擴(kuò)充,也就都不標(biāo)準(zhǔn)了),各數(shù)據(jù)庫(kù)提供實(shí)現(xiàn)ODBC的“驅(qū)動(dòng)程序”。ODBC的本意是“ODBC的最大優(yōu)點(diǎn)是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫(kù)”,其實(shí)都是扯淡,因?yàn)楦鲾?shù)據(jù)庫(kù)對(duì)標(biāo)準(zhǔn)SQL都做了大量的擴(kuò)充,除非你只使用標(biāo)準(zhǔn)的SQL,不然“統(tǒng)一”根本談不上。

          OLE DB是微軟“發(fā)明”的,用來(lái)淘汰ODBC的,OLE DB不光可以連接各種數(shù)據(jù)庫(kù),還可以連接exchange、活動(dòng)目錄、甚至操作系統(tǒng)文件目錄等各種數(shù)據(jù)庫(kù)源(也需要分別使用不同的“驅(qū)動(dòng)程序”)

          ADO也是微軟的,是用來(lái)淘汰早起微軟的RDO、DAO的(ADO可以做RDO、DAO能做的所有事),ADO在上層,通過(guò)下面的ODBC或者OLE DB來(lái)訪(fǎng)問(wèn)數(shù)據(jù)源(注意不是數(shù)據(jù)庫(kù),因?yàn)榭稍L(fǎng)問(wèn)范圍包括活動(dòng)目錄等各種數(shù)據(jù))。不過(guò)微軟目前的ODBC實(shí)際是通過(guò)OLE DB訪(fǎng)問(wèn)數(shù)據(jù)源的。

          層次關(guān)系:
          應(yīng)用程序 -> ADO -> ODBC -> OLE DB -> 數(shù)據(jù)源
          或者
          應(yīng)用程序 -> ADO -> OLE DB -> 數(shù)據(jù)源

          其實(shí)這些都東西可以理解為是和驅(qū)動(dòng)差不多。

          五、OLE DB vs ODBC
          1. OLE DB 與 ODBC 都是一個(gè)數(shù)據(jù)庫(kù)連接的公共接口,它們屏蔽了各種數(shù)據(jù)庫(kù)的連接協(xié)議,使編程人員遵從 OLD DB / ODBC接口,就可以訪(fǎng)問(wèn)各種數(shù)據(jù)源了。
          2. ODBC 比 OLE DB 使用更加廣泛,因?yàn)?ODBC 出現(xiàn)的要早。
          3. OLE DB 可以使用 ODBC 的數(shù)據(jù)驅(qū)動(dòng)程序。也就是 OLE DB 可以通過(guò) ODBC 訪(fǎng)問(wèn)數(shù)據(jù) ODBC數(shù)據(jù)源。在這個(gè)過(guò)程中 ODBC 充當(dāng)了中轉(zhuǎn)的作用,它的運(yùn)行機(jī)制如下。首先,應(yīng)用程序使用 OLE DB 提供程序,但是這個(gè)提供程序里面包含了與ODBC轉(zhuǎn)換的內(nèi)容。這樣,從ODBC源讀取的數(shù)據(jù)經(jīng)過(guò)轉(zhuǎn)換程序,轉(zhuǎn)換為OLE DB可以訪(fǎng)問(wèn)的數(shù)據(jù)源。這樣就實(shí)現(xiàn)了 OLE DB 訪(fǎng)問(wèn) ODBC 的數(shù)據(jù)源。
          當(dāng)然 OLE DB 也可以不通過(guò) ODBC 訪(fǎng)問(wèn),前提是該數(shù)據(jù)源要有OLE DB接口。這種OLE DB 提供程稱(chēng)為本機(jī)OLE DB提供程序。
          4. 在 Windows 操作系統(tǒng)中,有兩個(gè)工具分別用于創(chuàng)建 ODBC / OLE DB 數(shù)據(jù)源
          ODBC 數(shù)據(jù)源:在 "控制面板"中可以找到ODBC 數(shù)據(jù)源工具
          OLE DB 數(shù)據(jù)源:這個(gè)工具通常不能打開(kāi), 要通過(guò)程序來(lái)調(diào)才能調(diào)出來(lái)。它的名字叫"數(shù)據(jù)鏈接屬性"。
          5. SQL Server 自帶了 SQL Server / Oracle 的 OLEDB驅(qū)動(dòng)程序。
          6. OLE DB 比 ODBC 速度要快。
          posted on 2007-08-26 22:55 Jcat 閱讀(1535) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Database
          主站蜘蛛池模板: 石城县| 新兴县| 崇信县| 泰州市| 三都| 陆川县| 大荔县| 云安县| 汉沽区| 莱阳市| 英德市| 陕西省| 偏关县| 清苑县| 崇明县| 红桥区| 阳高县| 广河县| 华宁县| 施秉县| 安阳县| 杭锦后旗| 馆陶县| 泸定县| 高淳县| 富平县| 晋江市| 昆明市| 清流县| 通海县| 孙吴县| 沐川县| 固安县| 南昌市| 乐昌市| 通海县| 都匀市| 永靖县| 丰台区| 清原| 呼和浩特市|