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
1.  Object Linking and Embedding,对象连接与嵌入,简称OLE技术。OLE不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为部件对象模型(Component Object Model),简称COM。OLE可以用来创建复合文档,复合文档包含了创建于不同源应用程序,有着不同类型的数据,因此它可以把文字、声音、图像、表格等组合在一起。

对象链接和嵌入。在客户应用程序间传输和共享信息的一组综合标准。允许创建带有指向应用程序的链接的混合文档以使用户修改时不必在应用程序间切换的协议。 OLE基于组件对象模型(COM) 并允许开发可在多个应用程序间互操作的可复用即插即用对象。该协议已广泛用于商业上,在商业中电子表格、字处理程序、财务软件包和其他应用程序可以通过客户/服务器体系共享和链接单独的信息

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

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


四、区别和关系
ODBC最先出来,是用来连接oracle、sql server、access等数据库的一种接口标准(后来随着各厂商的扩充,也就都不标准了),各数据库提供实现ODBC的“驱动程序”。ODBC的本意是“ODBC的最大优点是能以统一的方式处理所有的数据库”,其实都是扯淡,因为各数据库对标准SQL都做了大量的扩充,除非你只使用标准的SQL,不然“统一”根本谈不上。

OLE DB是微软“发明”的,用来淘汰ODBC的,OLE DB不光可以连接各种数据库,还可以连接exchange、活动目录、甚至操作系统文件目录等各种数据库源(也需要分别使用不同的“驱动程序”)

ADO也是微软的,是用来淘汰早起微软的RDO、DAO的(ADO可以做RDO、DAO能做的所有事),ADO在上层,通过下面的ODBC或者OLE DB来访问数据源(注意不是数据库,因为可访问范围包括活动目录等各种数据)。不过微软目前的ODBC实际是通过OLE DB访问数据源的。

层次关系:
应用程序 -> ADO -> ODBC -> OLE DB -> 数据源
或者
应用程序 -> ADO -> OLE DB -> 数据源

其实这些都东西可以理解为是和驱动差不多。

五、OLE DB vs ODBC
1. OLE DB 与 ODBC 都是一个数据库连接的公共接口,它们屏蔽了各种数据库的连接协议,使编程人员遵从 OLD DB / ODBC接口,就可以访问各种数据源了。
2. ODBC 比 OLE DB 使用更加广泛,因为 ODBC 出现的要早。
3. OLE DB 可以使用 ODBC 的数据驱动程序。也就是 OLE DB 可以通过 ODBC 访问数据 ODBC数据源。在这个过程中 ODBC 充当了中转的作用,它的运行机制如下。首先,应用程序使用 OLE DB 提供程序,但是这个提供程序里面包含了与ODBC转换的内容。这样,从ODBC源读取的数据经过转换程序,转换为OLE DB可以访问的数据源。这样就实现了 OLE DB 访问 ODBC 的数据源。
当然 OLE DB 也可以不通过 ODBC 访问,前提是该数据源要有OLE DB接口。这种OLE DB 提供程称为本机OLE DB提供程序。
4. 在 Windows 操作系统中,有两个工具分别用于创建 ODBC / OLE DB 数据源
ODBC 数据源:在 "控制面板"中可以找到ODBC 数据源工具
OLE DB 数据源:这个工具通常不能打开, 要通过程序来调才能调出来。它的名字叫"数据链接属性"。
5. SQL Server 自带了 SQL Server / Oracle 的 OLEDB驱动程序。
6. OLE DB 比 ODBC 速度要快。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值