odbc ado dao rdo 的相关评论
来源:互联网 发布:刘宇昆 爱的算法pdf 编辑:程序博客网 时间:2024/04/30 21:32
ODBC执行效率最高,可与C类比
ADO对ODBC进行了封装,效率稍低些,但功能/代码比最高,一般都用这个东西,可与C++类比
DAO …… 好象是一种比较落后的技术了,反正我是没用过。
ODBC是Microsoft的基于关系数据库一种互连技术,它只能访问关系数据库,如果使用SQLAPI进行编程,效率较好,但代码较多,如果使用MFC ODBC封装的类进行访问比较简单。
ADO是一种基于COM的
DAO是Microsoft一种用来访问Jet引擎的方法,主要用来访问Access数据库,使用起来比较简单。
如果你想看这几种方法的详细说明与区别,可以参考
ODBC(开放数据库互连)和ADO(ActiveX数据对象)。介绍这两种类型的访问方法,但我想你会发现,ADO方法是针对新的程序设计 情形而采用的。它克服了早期技术的诸多限制,依赖于Microsoft新的底层访问方法OLE-DB(对象链接和嵌入数据库)。
注 ODBC通常用来访问不具备OLE-DB特性的非Microsoft数据库中的数据;16位的ODBC驱动程序工作起来可能非常缓慢。
ODBC素以最慢的数据访问方法而著称,但是很可惜,当ADO或DAO都不支持某个数据库管理器而ODBC支持这个数据库管理器时,在这种特定的情形 下,你仍然需要使用ODBC。在大多数情况下,这意味着要从数据库厂商那里获得所需的驱动程序,虽然Visual C++确实附带了一些产品的驱动程序(如果你正在使用数据库管理器的某些神秘功能,那么就需要建立自己的接口棗这并不是一件十分困难的事)。本质上讲,你 总是要使用ODBC来访问Microsoft产品之外的其它DBMS产品所创建的数据库,这些数据库并不具备OLE-DB功能。ODBC还要求做一些额外 的工作棗为ADO调整Visual C++中的大部分向导。
尽管Microsoft文件声明,可以用DAO访问非Microsoft产品建立的数据库,但你仍会发现,在这种情况下,使用ADO和ODBC要好得 多。这样的话,不但兼容性问题会少一些,速度也将有所提高,因为数据请求经过的接口层减少了。有一条经验要记住,DAO是设计用来处理MDB文件的。
ADO和DAO的主要区别是:
DAO 的设计思想使用一种接口来访问多种类型的数据。它在处理时使用Microsoft.Jet接口的ODBC数据源。DAO.Jet数据库服务的最独特的方面 就是它有自己的查询引擎。但它的最大弱点是由于查询服务运行于本地机上,这就意味着在处理任何远程数据请求之前,必须把所有的数据都传输到本地
ADO和DAO的最大区别是ADO使用OLEDB接口而非ODBC作为底层数据供应者的。依靠OLEDB,ADO也能够支持对非SQL数据存储的纪录集访 问,如Email和网络目录服务。OLEDB提供了比ODBC更多的灵活性和易用性。OLEDB服务的内部设计使得它能存取标准SQL类型的数据那样容易 的访问非SQL数据存储。OLEDB的一个关键特性是它可以提供对描述性数据存储的处理。通过提供某种方法来描述数据存储方式,OLEDB可以对以任何格 式存储的数据和以任何方法执行的查询提供访问途径。由于OLEDB并不要求所有数据存储都以表格、行和列的形式出现。所以与ODBC相比,它适用于更多的 数据存储类型。
用ODBC需要建一个ODBC数据源(用控制面板的ODBC管理器,或者程序中动态做都可以),然后程序中使用这个数据源。
连SQL Server的话,建议使用ODBC(如果用MFC,可以使用MFC对ODBC的封装类CDatabase和CRecordset等),或者ADO。
以下是微软的解释
What Are DAO and ODBC?
Home | Overview | How Do I | FAQ | ODBC Driver List
Both Data Access Objects (DAO) and Open Database Connectivity (ODBC) are application programming interfaces (APIs) that give you the ability to write applications that are independent of any particular database management system (DBMS).
DAO is familiar to database programmers using Microsoft Access Basic or Microsoft Visual Basic. DAO uses the Microsoft Jet database engine to provide a set of data access objects: database objects, tabledef and querydef objects, recordset objects, and others. DAO works best with .MDB files like those created by Microsoft Access, but you can also access ODBC data sources through DAO and the Microsoft Jet database engine.
ODBC provides an API that different database vendors implement via ODBC drivers specific to a particular database management system (DBMS). Your program uses this API to call the ODBC Driver Manager, which passes the calls to the appropriate driver. The driver, in turn, interacts with the DBMS using Structured Query Language (SQL).
Note As a major part of the Microsoft Windows Open Standards Architecture (WOSA), ODBC is here for the long run. DAO is optimized around the Microsoft Jet database engine, but you can still access ODBC and other external data sources via that engine, and the distinct ODBC API and the MFC classes based on it are still available and still have their role to play in your selection of database tools.
当然是用ADO好,优点是速度快,使用方便,省略了很多细节!
这也是大势所趋呀!
因为我对ADO较熟,这是我写的一点小东西:
三.ADO(ActiveX Data Object)技术特征
3.1 部件对象模型(COM)是Windows平台上的一个通用的接口标准。ADO正是建立在部件对象模型
它有以下的特点:
l它是基于OLE DB访问接口的,它对OLE DB的接口进行了卦装,定义了ADO对象,屏蔽了底层数据库接口之间的差异。属于数据库访问当中的高层接口。
lADO有选择的使用不同的底层数据库接口,以提供最高的性能。当数据库
lADO是一个二进制的标准,独立于任何编程语言,只要应用程序使用的语言支持访问COM对象,就可以使用ADO部件操作数据库。
3.2 ADO接口简介
本
_CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,可以 利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果只执行一次或几次数据访问操作,后者是比较好的选 择。但如果要频繁访问数据库,并要返回很多记录集,那么,应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用 _CommandPtr接口执行存储过程和SQL语句。
_RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同_CommandPtr 接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自 己创建数据连接。如果要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局—ConnectionPtr接口,然后使用 _RecordsetPtr执行
3.3 ADO当中的COM数据类型
在ADO当中使用的输入输出数据类型大部分是标准数据类型。但是一些参数(如:数据库字段值,出错处理
lVARIANT
VARIANT是一个结构,该结构的成员包含数据的类型名和数据的取值。VARIANT结构中可以存放各种各样的数据,包括编程语言的各种数据类型。如: 货币,日期,所有的COM接口类型。_variant_t类封装了VARIANT数据类型,并提供了管理VARIANT的方法。在ADO接口操作当中数据 库的操作都是经过_variant_t类封装的VARIANT结构来传递的。
lBSTR
BSTR是一个包含了字符串长度值及其缓冲区的结构,_bstr_t类封装了BSTR的数据结构和管理该数据的方法。我在ADO接口中字符串的传递就是通过它来传递的!
lHRESULT
在COM当中,大多数操作要返回一个HRESULT的返回值,用来测定方法调用是否成功。它是一个32位的无符号数。例如:我在进行更新多表的操作时,如 果只对的某一个表进行了更新,而另外的表没有成功执行,类型库的封装程序就会检查到这个值,调用_com_issue_error()方法,抛出相应的 _com_error异常,我们就要对这个异常捕获,并进行相应的处理,否则,就会产生脏数据。
ADO 和 RDO、DAO 的比较
ADO 并不是自动和您现存的数据访问应用程序代码兼容的。当 ADO 封装 DAO 和 RDO 的功能性的时候,您必须将许多
DAO (Data Access Objects)
RDO (Remote Data Objects)
ADO 是 DAO/RDO 的后继产物。ADO 2.0在功能上与 RDO 更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO “扩展”了 DAO 和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。例如,ADO 没有与 rdoEngine 和 rdoEnvironment 对象相等同的对象,可以显露 ODBC 驱动程序管理器和 hEnv 接口。尽管事实上您的接口可能是通过 ODBC OLE DB 服务提供程序实现的,但您当前也不能从 ADO 中创建 ODBC 数据源。
包含在 DAO 和 RDO 模型中的许多功能被合并为单个对象,这样就生成了一个简单得多的对象模型。然而,由于这个原因,起初您可能会觉得找到合适的 ADO 对象、集合、属性、方法,或事件非常困难。与 DAO 和 RDO不同的是,尽管 ADO 对象是分层结构的,但在分层结构范围之外也是可以创建的。
不过,也应当注意,ADO 当前并不支持 DAO 的所有功能。ADO 主要包括 RDO 风格的功能性,以便和 OLE DB 数据源交互,另外还包括远程和 DHTML 技术。
一般说来,在 ADO 的演化过程中,马上把大多数 DAO
为什么使用 ADO?
ADO 是为 Microsoft最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。OLE DB 为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件
以上著重從編程的角度討論了訪問數据庫的不同方法,從敘述中我們可以看到以上方法种种的不同本質上都是的訪問方式的不同.主要區別在于:
1,是否采用了分層的方式來訪問數据庫,比如,dao 与odbc,ole之間顯著的不同.軟件技術從最初的不分層,到c/s結构,到如今的多層結构.都是通過設計通用的中間層來簡化程序設計.
2,是支持com 架构的ole訪問方式,還是支持odbc架构的odbc驅動訪問
- odbc ado dao rdo 的相关评论
- ADO,OLEDB,ODBC,DAO,RDO的区别
- ADO,OLEDB,ODBC,DAO,RDO的区别
- ADO,OLEDB,ODBC,DAO,RDO的区别
- ODBC DAO RDO OLEDB ADO
- DAO/RDO/ADO,ODBC,OLEDB之间的关系
- 对ADO,DAO,RDO,OLE DB,ODBC的基本认识
- 知识分享:ODBC、OLEDB、DAO、RDO、ADO的区别与联系
- DAO、RDO、ADO、OLE DB 、ODBC and JDBC relation
- DAO、RDO、ADO、OLE DB 、ODBC and JDB
- DAO、RDO、ADO、OLE DB 、ODBC and JDBC relation
- [转]DAO、RDO、ADO、OLE DB 、ODBC and JDB
- odbc, ado, rdo, oledb,
- DAO RDO ADO ADO.NET
- 微软的 DAO,RDO,OLE DB, ADO,ADO.NET
- ADO,OLEDB,ODBC,DAO的区别
- ADO,OLEDB,ODBC,DAO的区别
- ADO,OLEDB,ODBC,DAO的区别
- boost库
- 手机的未来
- 解決NonUniqueObjectException異常及分析
- 【王若雄】张瑞敏:中国企业是“游击队”?
- 新劳动合同法实施前夜的尴尬
- odbc ado dao rdo 的相关评论
- SwingUtilities中invokeLater和invokeAndWait介绍(转载)
- 右键打不开盘符的解决方法
- Atlas学习手记系列(转)
- CMD下的网络安全配置
- java程序缩到系统托盘(winxp)
- reg命令
- Strategy模式
- 两个烧饼--关于股市的思考