ODBC与ADO的区别

来源:互联网 发布:win10卸载软件 编辑:程序博客网 时间:2024/05/22 15:52


ODBC(Open Database Connection,开放式数据互连)是访问数据库的一个统一接口标准,它允许开发人员使用ODBC API(应用程序接口)来访问多种不同的数据源,并执行数据操作。

当使用应用程序时,应用程序首先通过使用ODBC API与驱动管理器进行通信,ODBC API由一组ODBC函数调用组成,通过API调用ODBC函数提交SQL请求,然后,驱动管理器通过分析ODBC函数并判断数据源的类型,并配置正确的 驱动器,并把ODBC函数调用传递给驱动器,最后,驱动器处理ODBC函数调用,把SQL请求发送给数据源,数据源执行相应操作后,驱动器返回执行结果, 管理器再把执行结果返回给应用程序。

微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。
ADO包含一些顶层的对象:

连接,代表到数据库的连接
记录集,代表数据库记录的一个集合
命令,代表一个SQL命令
记录,代表数据的一个集合
流,代表数据的顺序集合
错误,代表数据库访问中产生的意外
字段,代表一个数据库字段
参数,代表一个SQL参数
属性,保存对象的信息
ADO组件的使用需要利用支持COM的高级语言,例如ASP中的VBScript或者Visual Basic,甚至Delphi,微软的竞争对手Borland的一个产品,现在也支持使用ADO来访问数据库。





ODBC通常用来访问不具备OLE-DB特性的非Microsoft数据库中的数据;16位的ODBC驱动程序工作起来可能非常缓慢。

ODBC素以最慢的数据访问方法而著称,但是很可惜,当ADO或DAO都不支持某个数据库管理器而ODBC支持这个数据库管理器时,在这种特定的情形 下,你仍然需要使用ODBC。在大多数情况下,这意味着要从数据库厂商那里获得所需的驱动程序,虽然Visual C++确实附带了一些产品的驱动程序(如果你正在使用数据库管理器的某些神秘功能,那么就需要建立自己的接口棗这并不是一件十分困难的事)。本质上讲,你 总是要使用ODBC来访问Microsoft产品之外的其它DBMS产品所创建的数据库,这些数据库并不具备OLE-DB功能。ODBC还要求做一些额外 的工作棗为ADO调整Visual C++中的大部分向导。

高级技巧

除了使用ADO和ODBC外,你还可以使用像DAO(数据访问对象)这样的早期技术,该技术包含在像Access这样的Microsoft产品中。 DAO依赖于用Microsoft Access自动获得的Microsoft Jet数据库引擎。DAO还是较早版的Visual Basic所使用的引擎(最新版的Visual Basic和Visual C++依赖于相同的ADO/OLE-DB组合),所以如果需要支持较早的Visual Basic应用程序,那么DAO仍是一个不错的选择。

尽管Microsoft文件声明,可以用DAO访问非Microsoft产品建立的数据库,但你仍会发现,在这种情况下,使用ADO和ODBC要好得 多。这样的话,不但兼容性问题会少一些,速度也将有所提高,因为数据请求经过的接口层减少了。有一条经验要记住,DAO是设计用来处理MDB文件的。

ADO的一个问题是,它不支持远程通信。这是Microsoft提出RDO(远程数据对象)的原因之一。这种特别技术在Visual Basic应用程序中的使用,要比在Visual C++中的使用多得多,所以我猜想,你们中有很多人都在使用它。但是,记住RDO仍是一种生命力很强的技术,这一点很重要。ADO确实具有替代RDO的远 程数据服务(RDS)特征。换言之,ADO在一个软件包中提供了DAO和RDO两种功能性。



ODBC使用的是微软提供的通用数据库连接,所以效率不高,ADO就好些,主要是针对微软数据库做了优化,降低了系统资源的使用率,所以效率比ODBC要高一些,特别是并发用户多时更能体现速度上的差异。


一般情况下,都是用ADO连接数据库进行编程~~
0 0