日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ODBC / OLEDB___DAO / RDO / ADO

發(fā)布時(shí)間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ODBC / OLEDB___DAO / RDO / ADO 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
ODBC / OLEDB___DAO / RDO / ADO

ODBC(Open Database Connectivity,開放數(shù)據(jù)庫(kù)互連)是微軟公司開放服務(wù)結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪問的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語言的支持,用戶可以直接將SQL語句送給ODBC。---出現(xiàn)的最早,但不總是萬能。是Microsoft引進(jìn)的一種早期數(shù)據(jù)庫(kù)接口技術(shù)。它實(shí)際上是ADO的前身。

OLE DB 是 Microsoft 的一個(gè)戰(zhàn)略性系統(tǒng)級(jí)編程接口,用于管理整個(gè)組織內(nèi)的數(shù)據(jù)。OLE DB 是建立在 ODBC 功能之上的一個(gè)開放規(guī)范。ODBC 是為訪問關(guān)系型數(shù)據(jù)庫(kù)而專門開發(fā)的,OLE DB 則用于訪問關(guān)系型和非關(guān)系型信息源,例如主機(jī) ISAM/VSAM 和層次數(shù)據(jù)庫(kù),電子郵件和文件系統(tǒng)存儲(chǔ),文本、圖形和地理數(shù)據(jù)以及自定義業(yè)務(wù)對(duì)象。?
OLE DB 定義了一組 COM 接口,對(duì)各種數(shù)據(jù)庫(kù)管理系統(tǒng)服務(wù)進(jìn)行封裝,并允許創(chuàng)建軟件組件,實(shí)現(xiàn)這些服務(wù)。OLE DB 組件包括數(shù)據(jù)提供程序(包含和表現(xiàn)數(shù)據(jù))、數(shù)據(jù)使用者(使用數(shù)據(jù))和服務(wù)組件(處理和傳送數(shù)據(jù),例如,查詢處理器和游標(biāo)引擎)。?
OLE DB 接口有助于平滑地集成組件,這樣,OLE DB 組件廠商就可以快速地向市場(chǎng)提供高質(zhì)量 OLE DB 組件。此外,OLE DB 包含了一個(gè)連接 ODBC 的“橋梁”,對(duì)現(xiàn)用的各種 ODBC 關(guān)系型數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序提供一貫的支持。---號(hào)稱取代odbc,但也兼容odbc

DAO(Data Access Objects):數(shù)據(jù)訪問對(duì)象是用來顯露了Microsoft Jet數(shù)據(jù)庫(kù)引擎(最早是給Microsoft Access 所使用,現(xiàn)在已經(jīng)支持其它數(shù)據(jù)庫(kù)),并允許開發(fā)者通過ODBC直接連接到其他數(shù)據(jù)庫(kù)一樣,直接連接到 Access 表。DAO 最適用于單系統(tǒng)應(yīng)用程序或在小范圍本地分布使用。其內(nèi)部已經(jīng)對(duì)Jet數(shù)據(jù)庫(kù)的訪問進(jìn)行了加速優(yōu)化,而且其使用起來也是很方便的。所以如果數(shù)據(jù)庫(kù)是Access數(shù)據(jù)庫(kù)且是本地使用的話,建議使用這種訪問方式---應(yīng)用的專一性

RDO(Remote Data Objects)遠(yuǎn)程數(shù)據(jù)對(duì)象是一個(gè)到ODBC的、面向?qū)ο蟮臄?shù)據(jù)訪問接口,它同易于使用的DAO style組合在一起,提供了一個(gè)接口,形式上展示出所有ODBC的底層功能和靈活性。盡管RDO在很好地訪問Jet或ISAM數(shù)據(jù)庫(kù)方面受到限制,而且它只能通過現(xiàn)存的ODBC驅(qū)動(dòng)程序來訪問關(guān)系數(shù)據(jù)庫(kù)。但是,RDO已被證明是許多SQL Server、Oracle 以及其他大型關(guān)系數(shù)據(jù)庫(kù)開發(fā)者經(jīng)常選用的最佳接口。RDO提供了用來訪問存儲(chǔ)過程和復(fù)雜結(jié)果集的更多和更復(fù)雜的對(duì)象、屬性,以及方法。---無疑是在odbc基礎(chǔ)上的

ADO(ActiveX Data Object)是DAO/RDO的后繼產(chǎn)物。ADO 2.0在功能上與RDO更相似,而且一般來說,在這兩種模型之間有一種相似的映射關(guān)系。ADO"擴(kuò)展"了DAO和 RDO 所使用的對(duì)象模型,這意味著它包含較少的對(duì)象、更多的屬性、方法(和參數(shù)),以及事件。 作為最新的數(shù)據(jù)庫(kù)訪問模式,ADO的使用也是簡(jiǎn)單易用,所以微軟已經(jīng)明確表示今后把重點(diǎn)放在ADO上,對(duì)DAO/RDO不再作升級(jí),所以ADO已經(jīng)成為了當(dāng)前數(shù)據(jù)庫(kù)開發(fā)的主流。 ADO涉及的數(shù)據(jù)存儲(chǔ)有DSN(數(shù)據(jù)源名稱)、ODBC(開放式數(shù)據(jù)連接)以及OLE DB三種方式。后面的例程將詳細(xì)講解這三種方式的具體訪問實(shí)現(xiàn)。---可以說是對(duì)odbc,oledb這些系統(tǒng)級(jí)的編程接口的匯接,并對(duì)DAO,RDO這些應(yīng)用級(jí)的編程接口的升級(jí)吧。

----------------------------------------------------------------------------------
OLEDB的性能比較?

有許多種辦法可以連上一個(gè)數(shù)據(jù)庫(kù). 你可以用System DSN, DSN-less連接或是本地的OLEDB provider. OLEDB? 這是什么什么玩藝兒? 也許你們中的許多人以前沒有聽說過. 要回答這個(gè)問題,我們先得回顧一下數(shù)據(jù)庫(kù)連接的歷史.?

早期的數(shù)據(jù)庫(kù)連接是非常困難的. 每個(gè)數(shù)據(jù)庫(kù)的格式都不一樣,開發(fā)者得對(duì)他們所開發(fā)的每種數(shù)據(jù)庫(kù)的底層API有深刻的了解. 因此,能處理各種各樣數(shù)據(jù)庫(kù)的通用的API就應(yīng)運(yùn)而生了. 也就是現(xiàn)在的ODBC(Open Database Connectivity), ODBC是人們?cè)趧?chuàng)建通用API的早期產(chǎn)物. 有許多種數(shù)據(jù)庫(kù)遵從了這種標(biāo)準(zhǔn),被稱為ODBC兼容的數(shù)據(jù)庫(kù).?
ODBC兼容的數(shù)據(jù)庫(kù)包括Access, MS-SQL Server, Oracle, Informix等.?

但ODBC并不是完美無缺的,它仍然含有大量的低級(jí)的調(diào)用,開發(fā)ODBC應(yīng)用程序仍較困難. 開發(fā)者不得不將大量的精力花在底層的數(shù)據(jù)庫(kù)通信中,而不能專注于他們所要處理的數(shù)據(jù). 后來微軟提出了一個(gè)解決方案: DAO(Data Access Objects). DAO的代碼看起來象這樣:?

objItem.AddNew?
objItem.Name = "Chair"?
objItem.Price = 10?
objItem.Update?

你也許看過DAO的代碼. 后來DAO演變?yōu)镽DO(Remote Data Objects, 為分布式數(shù)據(jù)庫(kù)體系設(shè)計(jì)), 再后來是ADO. 盡管它們都有各自的不足之處. 根據(jù)微軟的說法,"ODBC提供了本地SQL數(shù)據(jù)的存取,DAO提供了高級(jí)的數(shù)據(jù)對(duì)象". DAO和RDO都需要數(shù)據(jù)以SQL(Structured Query Language)的格式存儲(chǔ). 針對(duì)這些缺陷,微軟提出了OLEDB,一個(gè)基于COM的數(shù)據(jù)存儲(chǔ)對(duì)象,能提供對(duì)所有類型的數(shù)據(jù)的操作,甚至能在離線的情況下存取數(shù)據(jù)(比方說,你使用的是你的便攜機(jī),你可以毫不費(fèi)力地看到最后一次數(shù)據(jù)同步時(shí)的數(shù)據(jù)映像).?

????????? 這可以看出來,出現(xiàn)的順序是:?ODBC——>DAO——>RDO——>OLEDB——>ADO


OLEDB位于ODBC層與應(yīng)用程序之間. 在你的ASP頁面里,ADO是位于OLEDB之上的"應(yīng)用程序". 你的ADO調(diào)用先被送到OLEDB,然后再交由ODBC處理. 你可以直接連接到OLEDB層,如果你這么做了,你將看到服務(wù)器端游標(biāo)(recordset的缺省的游標(biāo),也是最常用的游標(biāo))性能的提升. 那我們?cè)撊绾沃苯舆B接到OLEDB呢??
ODBC-->OLEDB-->ADO-->應(yīng)用程序
想直接連到OLEDB層,你必須改變你的connection對(duì)象連接字符串. 先用老辦法創(chuàng)建一個(gè)connectiong對(duì)象:?

Dim objConn?
Set objConn = Server.CreateObject("ADODB.Connection")?

接下去,我們不用常規(guī)的類似DSN=pubs or DRIVER={MS SQL-?
Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine的連接字符串,而采用下面的連接字符串:?

objConn.ConnectionString = "Provider=ProviderName; Data?
Source=DatabaseSource; Initial Catalog=DatabaseName; User ID=UserID;?
Password=Password"?

對(duì)于SQL:?
ProviderName = SQLOLEDB?
Data Source = Server Name?
Initial Catalog = Database Name?

對(duì)于Access:?
ProviderName = Microsoft.Jet.OLEDB.3.51?
Data Source = Full path to .MDB file?

下面讓我們來看兩個(gè)例子,一個(gè)是針對(duì)Access的,還有一個(gè)是針對(duì)SQL的.

?

?如果你的連接SQL的DSN-less連接串是這樣的(用dsn連接的時(shí)候):?

DRIVER={MS SQL-Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine?


那么直接連接到OLEDB的連接字符串應(yīng)該是這樣的:?
Provider=SQLOLEDB; Data Source=myMachine; Initial Catalog=pubs; User?
ID=sa; Password=?

讓我們來看看Access,如果你的Access的連接字符串是(用dsn連接的時(shí)候):?
DRIVER={Microsoft Access Driver (*.mdb)};?
DBQ=c:\inetpub\wwwroot\users.mdb?


那么直接連接到OLEDB的連接字符串應(yīng)該是這樣的:?
Provider=Microsoft.Jet.OLEDB.3.51; Data?
Source=c:\inetpub\wwwroot\users.mdb

就是這么簡(jiǎn)單,挺棒的吧??

這很重要嗎??
現(xiàn)在你也許對(duì)為什么要學(xué)習(xí)這種新的數(shù)據(jù)庫(kù)連接方法感到有些兒迷惑,為什么不走標(biāo)準(zhǔn)的DSN-less/System DSN路子呢? 讓我來告訴你為什么. 據(jù)Wrox出的ADO 2.0?
Programmer's Reference一書中的測(cè)試,用OLEDB連接而不是DSN或DSN-less的連接會(huì)得到的性能提升如下:?

性能比較?
?? SQL??????????????? ?Access?
 OLEDB DSN OLEDB DSN?
Connection Times: 18 82 Connection Times: 62 99?
Iterating through 1,000 Records Times: 2900 5400 Iterating through?
1,000 Records Times: 100 950

=================================================================================================

下面這個(gè)百度知道里面的,回答的很精彩:

=================================================================================================

ODBC(開放數(shù)據(jù)庫(kù)互連):是Microsoft引進(jìn)的一種早期數(shù)據(jù)庫(kù)接口技術(shù)。它實(shí)際上是ADO的前身。早期的數(shù)據(jù)庫(kù)連接是非常困難的. 每個(gè)數(shù)據(jù)庫(kù)的格式都不一樣,開發(fā)者得對(duì)他們所開發(fā)的每種數(shù)據(jù)庫(kù)的 底層API有深刻的了解. 因此,能處理各種各樣數(shù)據(jù)庫(kù)的通用的API就應(yīng)運(yùn)而生了. 也就是現(xiàn)在的ODBC(Open Database Connectivity), ODBC是人們?cè)趧?chuàng)建通用API的早期產(chǎn)物. 有許多種數(shù)據(jù)庫(kù) 遵從了這種標(biāo)準(zhǔn),被稱為ODBC兼容的數(shù)據(jù)庫(kù). OLEDB(對(duì)象鏈接和嵌入數(shù)據(jù)庫(kù)):位于ODBC層與應(yīng)用程序之間. 在你的ASP頁面里,ADO是位于OLEDB之上的"應(yīng)用程序". 你的ADO調(diào)用先被送到OLEDB,然后再交由ODBC處理. 你可以直接連接到OLEDB層, 如果你這么做了,你將看到服務(wù)器端游標(biāo)(recordset的缺省的游標(biāo),也是最常用的游標(biāo))性能的提升. 用odbc連接數(shù)據(jù)庫(kù): odbc中提供三種dsn,它們的區(qū)別很簡(jiǎn)單: 用戶dsn只能用于本用戶。 系統(tǒng)dsn和文件dsn的區(qū)別只在于連接信息的存放位置不同:系統(tǒng)dsn存放在odbc儲(chǔ)存區(qū)里,而文件dsn則放在一個(gè)文本文件中。 它們的創(chuàng)建方法就不說了。 用dsn連接數(shù)據(jù)庫(kù): 在asp中使用它們時(shí),寫法如下: A.sql server: 用系統(tǒng)dsn: connstr="DSN=dsnname; UID=xx; PWD=xxx;DATABASE=dbname" 用文件dsn: connstr="FILEDSN=xx;UID=xx; PWD=xxx;DATABASE=dbname" 還可以用連接字符串(從而不用再建立dsn): connstr="DRIVER={SQL SERVER};SERVER=servername;UID=xx;PWD=xxx" B.access: 用系統(tǒng)dsn: connstr="DSN=dsnname" (或者為:connstr="DSN=dsnname;UID=xx;PWD=xxx") 用文件dsn: connstr="FILEDSN=xx" 還可以用連接字符串(從而不用再建立dsn): connstr="DRIVER={Microsoft Access Driver};DBQ=d:\abc\abc.mdb" 用oledb連接數(shù)據(jù)庫(kù): A.sql server: connstr="PROVIDER=SQLOLEDB; DATA SOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname" B.access: connstr="PROVICER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=c:\abc\abc.mdb" 值得注意的是,OLE DB對(duì)ODBC的兼容性,允許OLE DB訪問現(xiàn)有的ODBC數(shù)據(jù)源。其優(yōu)點(diǎn)很明顯,由于ODBC相對(duì)OLE DB來說使用得更為普遍,因此可以獲得的ODBC驅(qū)動(dòng)程序相應(yīng)地要比OLE DB的要多。 這樣不一定要得到OLE DB的驅(qū)動(dòng)程序,就可以立即訪問原有的數(shù)據(jù)系統(tǒng)。提供者位于OLE DB層,而驅(qū)動(dòng)程序位于ODBC層。如果想使用一個(gè)ODBC數(shù)據(jù)源,需要使用針對(duì)ODBC的OLE DB提供者,它會(huì)接著 使用相應(yīng)的ODBC驅(qū)動(dòng)程序。如果不需要使用ODBC數(shù)據(jù)源,那么可以使用相應(yīng)的OLE DB提供者,這些通常稱為本地提供者(native provider)??梢郧宄乜闯鍪褂肙DBC提供者意味著需要一個(gè)額外的 層。因此,當(dāng)訪問相同的數(shù)據(jù)時(shí),針對(duì)ODBC的OLE DB提供者可能會(huì)比本地的OLE DB提供者的速度慢一些。 posted on 2011-12-09 00:33?初學(xué)者心態(tài) 閱讀(...) 評(píng)論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/jinianjun/archive/2011/12/09/2281442.html

總結(jié)

以上是生活随笔為你收集整理的ODBC / OLEDB___DAO / RDO / ADO的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。