简要叙述下 ODBC ,OLEDB 和ADO之间的区别和联系!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简要叙述下 ODBC ,OLEDB 和ADO之间的区别和联系!相关的知识,希望对你有一定的参考价值。

问题是比较宽泛了,你可以讲下原理性的东西,让我去查找这些资料的时候有个大概的了解和方向
谢谢您了

ODBC 是 开放式数据库互连 是一些标准规范符合规范的数据库就可以通过SQL(结构化查询语言)编写的命令进行操作.理解ODBC是种数据库互连标准就行了,WINDOWS中ODBC配置,只是对数据库进行系统中登记操作一样,不起任何数据服务作用.

OLE DB 是 数据库嵌入对象,是一套组件对象模型 (COM) 接口,可提供对存储在不同信息源中的数据进行统一访问的能力。即:通过这个对象可以对数据库操作.但他只是数据库的一个接口.因为要统一许多接口,它接口也变的复杂繁多,不便于使用.

ADO 是ActiveX® Data Objects,是程序和数据接口的桥梁,我们使用他就可以方便的操作数据库数据.

这么说吧,我们操作ADO,ADO则访问OLEDB(当然可以访问其他的,只要符合ADO接口),OLEDB查询ODBC(也可以不用找他)得到数据接口操作数据.
参考技术A Data 是基于 DAO 对象设计的数据控件。
ADODC 是 基于 ADO 对象设计的数据控件。

使用数据控件可以减少自己编写代码。但是与自己利用数据访问对象编写代码相比,开销略大,灵活性少差。

但是,在 DAO 方面,一些控件的数据源需要绑定到 Data 控件。
在支持 ADODC 的控件方面,则可以支持动态绑定到记录集对象。

DAO主要适合本机数据库的读写,也可以通过ODBC访问网上的数据库,但效率比较低,一般不采用这种方法,更愿意采用RDO或ADO。如果要使用RDO或ADO的数据库控件都需要另外从部件对话框中添加相应的数据控件,三种方式的数据控件不同。区分你的程序是DAO、RDO,还是ADO的,可以看看打开数据库的方式。DAO使用OpenDatabase方法,RDO使用OpenConnection方法,而ADO一般通过一个ConnectionString来确定数据库的类型和位置。

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
不过直接使用ODBC API比较麻烦,所以微软后来又发展出来DAO、RDO、ADO这些数据库对象模型。使用这些对象模型开发程序更容易。这些模型都支持ODBC,所以即使你所访问的数据库没有提供ADO的驱动(或称提供者),只要有ODBC驱动一样可以使用ADO进行访问。

DAO和ODBC的工作原理差别较大。ODBC原本是通过ODBC API调用的,但VB的DAO和RDO都封装了ODBC,所以,在VB中应用起来感觉差别不大,调用的时候只是在指定驱动时有所不同,一般的数据库操作差不多。DAO是针对VB/Access设计的,VC 4.0以后也开始使用,它所支持的数据库类型就是VB的那几种,很少见第三方驱动程序。ODBC是开放的数据库接口,几乎支持所有数据库类型,对于很多VB不能很好地支持的数据库类型,如Visual FoxPro 5.0(参见:QA000003 "VB提示"不能识别的数据库文件格式""),都可以使用ODBC驱动。一般来说DAO支持本机Access数据库比较理想,但在客户/服务器体系上不如ODBC功能强大。
参考技术B DAO主要适合本机数据库的读写,也可以通过ODBC访问网上的数据库,但效率比较低,一般不采用这种方法,更愿意采用RDO或ADO。如果要使用RDO或ADO的数据库控件都需要另外从部件对话框中添加相应的数据控件,三种方式的数据控件不同。区分你的程序是DAO、RDO,还是ADO的,可以看看打开数据库的方式。DAO使用OpenDatabase方法,RDO使用OpenConnection方法,而ADO一般通过一个ConnectionString来确定数据库的类型和位置。

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
不过直接使用ODBC API比较麻烦,所以微软后来又发展出来DAO、RDO、ADO这些数据库对象模型。使用这些对象模型开发程序更容易。这些模型都支持ODBC,所以即使你所访问的数据库没有提供ADO的驱动(或称提供者),只要有ODBC驱动一样可以使用ADO进行访问。
参考技术C ADO是数控组空间

转载OLE DB, ADO, ODBC关系与区别

原文:OLE DB, ADO, ODBC关系与区别  

 

OLE DB, ADO, ODBC 
一、 

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用 SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。 

应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。 


二、 

OLE DB(OLEDB)是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化问题语言(SQL)能力,还具有面向其他非SQL数据类型的通路。 作为微软的组件对象模型(COM)的一种设计,OLE DB是一组读写数据的方法(在过去可能被称为渠道)。OLD DB中的对象主要包括数据源对象、阶段对象、命令对象和行组对象。使用OLE DB的应用程序会用到如下的请求序列: 初始化OLE 连接到数据源 发出命令 处理结果 释放数据源对象并停止初始化OLE 

OLE DB标准中定义的新概念----OLE DB将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。这种组件模型中的各个部分被冠以不同的名称:数据提供者(Data Provider)。 提供数据存储的软件组件,小到普通的文本文件、大到主机上的复杂数据库,或者电子邮件存储,都是数据提供者的例子。有的文档把这些软件组件的开发商也称为 数据提供者。 

我们要开启如Access 数据库中的数据,必须用ADO.NET 透过OLE DB 来开启。ADO.NET 利用OLE DB 来取得数据,这是因为OLE DB 了解如何和许多种数据源作沟通,所以对OLE DB有相当程度的了解是很重要的。 


三、 

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

ADO被设计来继承微软早期的数据访问对象层,包括RDO (Remote Data Objects) 和DAO(Data Access Objects)。ADO在1996年冬被发布。


原文:http://blog.csdn.net/yinjingjing198808/article/details/7665577

一、ODBC

  • ODBC的由来

1992年Microsoft和Sybase、Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库。随后ODBC便获得了许多数据库厂商和Third-Party的支持而逐渐成为标准的数据存取技术。
ODBC以当时的业界标准规范X/OpenCall-LevelInterface(CLI)和ISO/IEC9075-3Call- LevelInterface(SQL/CLI)为涵盖的范围,因而支持了广阔的数据库。虽然ODBC在初期的版本中执行效率不佳,而且功能有限,因此也 为人们所贬低。但是,随着Microsoft不断地改善ODBC,使ODBC的执行效率不断增加,ODBC驱动程序的功能也日渐齐全。到目前,ODBC已 经是一个稳定并且执行效率良好的数据存取引擎。不过ODBC仅支持关系数据库,以及传统的数据库数据类型,并且只以C/C++语言API(API就是一些 C语言的代码,是最底层的程序,在windows中就是一些.dll的文件)形式提供服务,因而无法符合日渐复杂的数据存取应用,也无法让脚本语言使用。 因此Microsoft除了ODBC之外,也推出了其他的数据存取技术以满足程序员不同的需要。(注:ODBC是面向过程的语言,由C语言开发出来,不能 兼容多种语言,所以开发的难度大,而且只支持有限的数据库公司,对于后来的EXCEL等根本不能支持)

  • ODBC的介绍

 ODBC(Open Database Connectivity,开放数据库互连)是 微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用 SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。


二、 OLE DB

  • OLE-DB的由来

随着数据源日益复杂化,现今的应用程序很可能需要从不同的数据源取得数据,加以处理,再把处理过的数据输出到另外一个数据源中。更麻烦的是这些数据源可能不是传统的关系数据库,而可能是Excel文件,Email,Internet/Intranet上的电子签名信息。Microsoft为了让应用程序能够以统一的方式存取各种不同的数
据源,在1997年提出了UniversalDataAccess(UDA)架构。UDA以COM技术为核心,协助程序员存取企业中各类不同的数据源。 UDA以OLE-DB(属于操作系统层次的软件)做为技术的骨架。OLE-DB定义了统一的COM接口做为存取各类异质数据源的标准,并且封装在一组 COM对象之中。藉由OLE-DB,程序员就可以使用一致的方式来存取各种数据。但仍然OLEDB是一个低层次的,利用效率不高。

  • OLE-DB的介绍

OLE DB(Object Link and embed 即 对象连接与嵌入。)是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化问题语言(SQL)能力,还具有面向其他非SQL数据类型的通路。 作为微软的组件对象模型(COM)的一种设计,OLE DB是一组读写数据的方法(在过去可能被称为渠道)。OLD DB中的对象主要包括数据源对象、阶段对象、命令对象和行组对象。使用OLE DB的应用程序会用到如下的请求序列:初始化OLE 连接到数据源 发出命令 处理结果 释放数据源对象并停止初始化OLE

OLE DB标准中定义的新概念----OLE DB将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。这种组件模型中的各个部分被冠以不同的名称:数据提供者(Data Provider)。 提供数据存储的软件组件,小到普通的文本文件、大到主机上的复杂数据库,或者电子邮件存储,都是数据提供者的例子。有的文档把这些软件组件的开发商也称为 数据提供者。

我们要开启如Access 数据库中的数据,必须用ADO.NET透过OLE DB 来开启。ADO.NET 利用OLE DB 来取得数据,这是因为OLE DB 了解如何和许多种数据源作沟通,所以对OLE DB有相当程度的了解是很重要的。

 

  • OLE DB 和ODBC的区别

由于OLEDB和ODBC 标准都是为了提供统一的访问数据接口,所以曾经有人疑惑:OLE DB 是不是替代ODBC 的新标准?答案是否定的。实际上,ODBC 标准的对象是基于SQL 的数据源(SQL-Based Data Source),而OLE DB 的对象则是范围更为广泛的任何数据存储。从这个意义上说,符合ODBC 标准的数据源是符合OLE DB 标准的数据存储的子集。

三、 ADO

  • ADO的由来

虽然OLE-DB允 许程序员存取各类数据,是一个非常良好的架构,但是由于OLE-DB太底层化,而且在使用上非常复杂,需要程序员拥有高超的技巧,因此只有少数的程序员才 有办法使用OLE-DB。这让OLE-DB无法广为流行。为了解决这个问题,并且让VB和脚本语言也能够藉由OLE-DB存取各种数据 源,Microsoft同样以COM技术封装OLE-DB为ADO对象,(这一步是很重要的,实现了多种程序可以互相调,并且可以开发的语言也丰富了)简 化了程序员数据存取的工作。由于 ADO成功地封装了OLE-DB大部分的功能,并且大量简化了数据存取工作,因此 ADO也逐渐被愈来愈多的程序员所接受。

  • ADO的介绍

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

ADO被设计来继承微软早期的数据访问对象层,包括RDO (Remote DataObjects)和DAO(Data Access Objects)。ADO在1996年冬被发布。

ADO包括了6个类:Connection,Command,Recordset,Errors,Parameters,Fields

  • 说说自己的理解

说通俗点 OLE DB和 ODBC都是最底层的东西,而ADO对象给我们提供了一个“可视化”,和应用层直接交互的组件,我们不用过多的关注OLEDB的内部机制,只需要了解 ADO通过OLE DB创建数据源的几种方法即可,就可以通过ADO轻松地获取数据源。可以说ADO是应用程序和数据底层的一个中间层,ADO对象通过OLE DB间接取得数据库中的数据。OLE DB只是提供了通向各种数据库的一个通用接口,简单的可以用下图来表示:

 技术分享

以上是关于简要叙述下 ODBC ,OLEDB 和ADO之间的区别和联系!的主要内容,如果未能解决你的问题,请参考以下文章

转载ADO,OLEDB,ODBC,DAO的区别

请问VC++中如何连接odbc数据源,具体步骤!谢谢!

Atitit.跨语言数据库db  api兼容性 jdbc odbc ado oledb 增强方案

转载OLE DB, ADO, ODBC关系与区别

ADO数据库编程详解(C++)----初级入门篇

ODBCOLE DB ADO的区别