ADO,DAO,OBDC,OLEDB到底都是什么呢?有什么区别呢?请帮帮忙!

gongbird 2000-12-13 10:02:00
ADO,DAO,OBDC,OLEDB到底都是什么呢?有什么区别呢?请帮帮忙!
详细一点好吗?!
谢谢了!
...全文
2418 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
111 2001-06-06
  • 打赏
  • 举报
回复
DAO、 RDO和ADO的比較 及ODBC和OLE2


DAO (Data Access Objects數據訪問對象)是第一個面向對象的介面,它提供了另一种本地操作數据庫的机制,它通過程序代碼而不是中間層(比如OLE,ODBC)來訪問數据庫.多個DAO构成一個体系結构,在這個結构中各個DAO協同操作.它曾經是訪問本地數据庫( Microsoft Jet 數据庫引擎)最強有力的工具. 需要說明的是后來又出現了ODBCDirect, 它為DAO提供了訪問遠程ODBC數据的全部能力,使DAO能夠訪問遠程數据庫,但這并不說明DAO仍有前途可言.(呵呵,個人看法,上當莫怪)

RDO (Remote Data Objects遠程數据對象)是一個專門為訪問訪問遠程ODBC關系數据庫而開發的程序接口,它同易于使用的 DAO style組合在一起,提供了一個能利用所有 ODBC 的底層功能的介面。RDO 在地訪問 Jet 或 ISAM 數据庫,以及只能通過現存的 ODBC 驅動程式來訪問關系數据庫方面受到諸多限制。所以在OLE訪問日漸成為趨勢的今天,這并不是一個很好的選擇.(聲明同上).


ADO (ActiveX Data Objects)提供了与DAO,RDO完全不同的數据訪問方式--OLE。ADO 主要包括 RDO 風格的功能性,以便和 OLE DB 資料源交互,另外還包括遠端和 DHTML 技術。不過,也應當注意,ADO 當前幷不支援 DAO 的所有功能(比如幷不支援資料定義 (DDL)、用戶、組,等等) ,沒有與 rdoEngine 和 rdoEnvironment 物件相類似的物件來顯露 ODBC 驅動程式管理器和 hEnv 介面。儘管事實上您的介面可能是通過 ODBC OLE DB 服務提供程式實現的,但您當前也不能從 ADO 中創建 ODBC 資料源。幸好ODBC過時的呼聲越來越高漲.


以上著重從編程的角度討論了訪問數据庫的不同方法,從敘述中我們可以看到以上方法种种的不同本質上都是的訪問方式的不同.主要區別在于:
1,是否采用了分層的方式來訪問數据庫,比如,dao 与odbc,ole之間顯著的不同.軟件技術從最初的不分層,到c/s結构,到如今的多層結构.都是通過設計通用的中間層來簡化程序設計.
2,是支持com 架构的ole訪問方式,還是支持odbc架构的odbc驅動訪問,從大多數的說法來看,好像ole是今后軟件技術支持的重點.

這之間的差別有些并不如我所說的那么明顯,各种各樣的變化正在繼續.我從訪問數据庫的角度總結了一張表:對不起,沒畫成電子圖.

netskiff 2001-05-25
  • 打赏
  • 举报
回复
关注!
taolei 2000-12-20
  • 打赏
  • 举报
回复
to: wanghu
也许我说的不正确,但是有一点需要指出,Sql Server7.0及其以后产品不再提供DB-Library,
也就是说DB-Library的最后一个版本是for 6.5的。
bush 2000-12-19
  • 打赏
  • 举报
回复
to zzh:
我需要你的帮助!!
gatesgo@21cn.com
adidasprince 2000-12-19
  • 打赏
  • 举报
回复
OLEDB的优点主要是他是类似于抽象层的接口,他不仅可以连接数据库,还可以连接文件,mail等等一切的一切,但是上层对他的调用都一样(看出M$喜欢“封装”的作风了吗?)
wanghu 2000-12-19
  • 打赏
  • 举报
回复
taolei,你好。关于sql server7.x我还有一些疑问:
你说sql server最底层Driver是OLEDB (USE TDS),我觉的不大正确。
第一:sql server只是在服务端的各个引擎(如命令分析器,加锁管理器)之间通信时采用了oledb机制.
第二:tds(表格式数据流)是sql server客户端和服务端之间采用的专用自描述数据流,他们可以由odbc,oledb,db-library发出和接受。不单单是oledb.
第三:ODBC比OLEDB古老,你说ODBC用OLEDB封装,那么在SQL SERVER中重写了ODBC吗?
谢谢回答

下面的图出自《SQL SERVER 7.0技术内幕》p65,请参考:

--------SQL SERVER客户应用程序-------
| | |
| | |
OLE DB ODBC DB-LIBRARY
| | |
|________________|__________________|
客户网库
客户机 |
————————————————————————————————————————
网络
________________________________________________________________________________
服务器 |
服务器网库
|
ODS(开放式数据服务)
|
SQL SERVER(一堆引擎的集合)
taolei 2000-12-19
  • 打赏
  • 举报
回复
同意wanghu的观点,只是在效率上ODBC和OLEDB不可直接比较。他们是两种接口规范。
MS Sql Server7.x及其更高版本的最底层Driver是OLEDB (USE TDS),ODBC Drvier是用OLEDB Driver 封装的;而大多数其他数据库只提供ODBC Driver,而OLEDB 用的是OLEDB over ODBC。
关于性能问题就显而易见了。
arthree 2000-12-19
  • 打赏
  • 举报
回复
wanghu对oledb的描述挺好。
acute 2000-12-19
  • 打赏
  • 举报
回复
ODBC:开放数据库互连标准
DAO:数据访问对象
OLE DB:对象链接和嵌入数据库
ADO:ActiveX数据对象

OLE DB由一组COM接口组成的,而这些接口提供集中的数据库管理服务。
ADO是类属于OLEDB的用户程序,设计用来访问任何OLEDB供应程序。还可以复制早期数据库技术所支持的接口。它的主要目标是使得OLEDB供应程序提供的普通运算更容易。听说能跨平台使用。
ODBC我就不想多说了,以前和现在一部分程序都建立在ODBC基础上,我都说累了。
DAO已经广泛的被ODBC和OLEDB所代替了,而且DAO也确实不应该再于新应用程序的开发中了。也就无需多说了。
acute 2000-12-19
  • 打赏
  • 举报
回复
ODBC:开放数据库互连标准
DAO:数据访问对象
OLE DB:对象链接和嵌入数据库
ADO:ActiveX数据对象

OLE DB由一组COM接口组成的,而这些接口提供集中的数据库管理服务。
ADO是类属于OLEDB的用户程序,设计用来访问任何OLEDB供应程序。还可以复制早期数据库技术所支持的接口。它的主要目标是使得OLEDB供应程序提供的普通运算更容易。听说能跨平台使用。
ODBC我就不想多说了,以前和现在一部分程序都建立在ODBC基础上,我都说累了。
DAO已经广泛的被ODBC和OLEDB所代替了,而且DAO也确实不应该再于新应用程序的开发中了。也就无需多说了。
U皮特U 2000-12-19
  • 打赏
  • 举报
回复
DAO用于访问桌面数据库,如access等,基于Jet数据库引擎
OLEDB可以访问关系型数据库和非关系型数据库(如CSV文本等),基于COM,M$大力推荐的。
ADO是OLEDB的封装,为了方便使用OLEDB,可以在VBScript或JavaScript中使用。
ODBC太古老了,效率不高,而且只能访问关系型数据库。

另外还有一种:OLEDB模板,将OLEDB封装成模板来使用,比较方便,我喜欢!
个人建议:在VB、VBScript、JavaScript中使用ADO,VC中使用OLEDB模板。
myb123 2000-12-19
  • 打赏
  • 举报
回复
关注!!!
wanghu 2000-12-19
  • 打赏
  • 举报
回复
odbc,oledb,ado的关系:
odbc: 曾经的数据库通信标准
oledb: 在一切对象化的趋势下,ms打算用它取代odbc.
oledb分两种:直接的oledb和面向odbc的oledb,后者架构在odbc上,这
样没有自己的oledb提供者的数据库也可以使用oledb的特点了。oledb的效率要高
于odbc.
ado: 其实只是一个应用程序层次的界面,它用oledb来与数据库通信。
yandw 2000-12-19
  • 打赏
  • 举报
回复
to zzh:
我在开发文档中找不到,您能发给我吗?yandw007@sina.com 多谢
zzh 2000-12-14
  • 打赏
  • 举报
回复
这几种都是访问数据库的方法,对于这几种数据库访问方法的详细使用包括说明,你可以参考开发文档当中的文章〈用VC操作数据库〉其中有对这四种方法的详细介绍,同时还附有例子,如果还有问题,可以发EMAIL给我。
yandw 2000-12-14
  • 打赏
  • 举报
回复
关注
土豆 2000-12-13
  • 打赏
  • 举报
回复
ODBC效率未必有OLEDB高。现在有些OLEDB并不是在ODBC的基础上封装的
GoodLuckForYou 2000-12-13
  • 打赏
  • 举报
回复
应该说,从效率上看,ODBC效率最快。从通用性看,OLEDB最好。从方便性看,ADO和DAO最好。如果你开发的程序是使用ACCESS数据库的,不妨使用DAO。MSDN中的文档说,推荐使用OLEDB或ODBC!
Edward 2000-12-13
  • 打赏
  • 举报
回复
呀!不太清楚!
不过我知道 OLEDB 是基于 COM 的一组接口规范,用来访问各种数据源,主要由数据源提供商来实现,如 ORACLE、SQL Server、Access。
ADO 是利用 OLEDB 提供的基本接口,加以封装,形成简单易用的一组对象/方法/属性集合,方便快速开发。
ODBC 是在 C 语言级别上实现的一组调用规范,目的也是访问各种数据源,不过现在来说比较老了(个人观点)。
DAO 建立在 MS JET 技术 (最早在 Access 中实现)上的,主要是用来访问所谓的桌面数据库(Access/FoxPro/dBase 等)。
gongbird 2000-12-13
  • 打赏
  • 举报
回复
不好意思写错了,应该是ODBC。
加载更多回复(1)

16,465

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧