ADO,OLEDB,ODBC,DAO,RDO的区别

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

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

DAO:数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使用,现在已经支持其它数据库),并允许开发者通过ODBC直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或在小范围本地分布使用。其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式---应用的专一性

RDO(Remote Data Objects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。---无疑是在odbc基础上的

OLE DB 是 Microsoft 的一个战略性系统级编程接口,用于管理整个组织内的数据。OLE DB 是建立在 ODBC 功能之上的一个开放规范。ODBC 是为访问关系型数据库而专门开发的,OLE DB 则用于访问关系型和非关系型信息源,例如主机 ISAM/VSAM 和层次数据库,电子邮件和文件系统存储,文本、图形和地理数据以及自定义业务对象。
OLE DB 定义了一组 COM 接口,对各种数据库管理系统服务进行封装,并允许创建软件组件,实现这些服务。OLE DB 组件包括数据提供程序(包含和表现数据)、数据使用者(使用数据)和服务组件(处理和传送数据,例如,查询处理器和游标引擎)。
OLE DB 接口有助于平滑地集成组件,这样,OLE DB 组件厂商就可以快速地向市场提供高质量 OLE DB 组件。此外,OLE DB 包含了一个连接 ODBC 的“桥梁”,对现用的各种 ODBC 关系型数据库驱动程序提供一贯的支持。---号称取代odbc,但也兼容odbc

ADO(ActiveX Data Object)是DAO/RDO的后继产物。ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。 作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。 ADO涉及的数据存储有DSN(数据源名称)、ODBC(开放式数据连接)以及OLE DB三种方式。后面的例程将详细讲解这三种方式的具体访问实现。---可以说是对odbc,oledb这些系统级的编程接口的汇接,并对DAO,RDO这些应用级的编程接口的升级吧。

OLEDB的性能比较

有许多种办法可以连上一个数据库. 你可以用System DSN, DSN-less连接或是本地的OLEDB provider. OLEDB? 这是什么什么玩艺儿? 也许你们中的许多人以前没有听说过. 要回答这个问题,我们先得回顾一下数据库连接的历史.

早期的数据库连接是非常困难的. 每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解. 因此,能处理各种各样数据库的通用的API就应运而生了. 也就是现在的ODBC(Open Database Connectivity), ODBC是人们在创建通用API的早期产物. 有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库.
ODBC兼容的数据库包括Access, MS-SQL Server, Oracle, Informix等.

但ODBC并不是完美无缺的,它仍然含有大量的低级的调用,开发ODBC应用程序仍较困难. 开发者不得不将大量的精力花在底层的数据库通信中,而不能专注于他们所要处理的数据. 后来微软提出了一个解决方案: DAO(Data Access Objects). DAO的代码看起来象这样:

objItem.AddNew
objItem.Name = "Chair"
objItem.Price = 10
objItem.Update

你也许看过DAO的代码. 后来DAO演变为RDO(Remote Data Objects, 为分布式数据库体系设计), 再后来是ADO. 尽管它们都有各自的不足之处. 根据微软的说法,"ODBC提供了本地SQL数据的存取,DAO提供了高级的数据对象". DAO和RDO都需要数据以SQL(Structured Query Language)的格式存储. 针对这些缺陷,微软提出了OLEDB,一个基于COM的数据存储对象,能提供对所有类型的数据的操作,甚至能在离线的情况下存取数据(比方说,你使用的是你的便携机,你可以毫不费力地看到最后一次数据同步时的数据映像).

OLEDB位于ODBC层与应用程序之间. 在你的ASP页面里,ADO是位于OLEDB之上的"应用程序". 你的ADO调用先被送到OLEDB,然后再交由ODBC处理. 你可以直接连接到OLEDB层,如果你这么做了,你将看到服务器端游标(recordset的缺省的游标,也是最常用的游标)性能的提升. 那我们该如何直接连接到OLEDB呢?

要想直接连到OLEDB层,你必须改变你的connection对象连接字符串. 先用老办法创建一个connectiong对象:

Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")

接下去,我们不用常规的类似DSN=pubs or DRIVER={MS SQL-
Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine的连接字符串,而采用下面的连接字符串:

objConn.ConnectionString = "Provider=ProviderName; Data
Source=DatabaseSource; Initial Catalog=DatabaseName; User ID=UserID;
Password=Password"

对于SQL:
ProviderName = SQLOLEDB
Data Source = Server Name
Initial Catalog = Database Name

对于Access:
ProviderName = Microsoft.Jet.OLEDB.3.51
Data Source = Full path to .MDB file

下面让我们来看两个例子,一个是针对Access的,还有一个是针对SQL的. 如果你的连接SQL的DSN-less连接串是这样的:

DRIVER={MS SQL-Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine

那么直接连接到OLEDB的连接字符串应该是这样的:

Provider=SQLOLEDB; Data Source=myMachine; Initial Catalog=pubs; User
ID=sa; Password=

让我们来看看Access,如果你的Access的连接字符串是:

DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=c:/inetpub/wwwroot/users.mdb

那么直接连接到OLEDB的连接字符串应该是这样的:

Provider=Microsoft.Jet.OLEDB.3.51; Data
Source=c:/inetpub/wwwroot/users.mdb

就是这么简单,挺棒的吧?

这很重要吗?
现在你也许对为什么要学习这种新的数据库连接方法感到有些儿迷惑,为什么不走标准的DSN-less/System DSN路子呢? 让我来告诉你为什么. 据Wrox出的ADO 2.0
Programmer's Reference一书中的测试,用OLEDB连接而不是DSN或DSN-less的连接会得到的性能提升如下:

性能比较
SQL Access
 OLEDB DSN OLEDB DSN
Connection Times: 18 82 Connection Times: 62 99
Iterating through 1,000 Records Times: 2900 5400 Iterating through
1,000 Records Times: 100 950

 

--------------------------------------------------------------------------------
访问接口    易用性  运行性能  可扩展性  突出特点  能否访问非关系数据源  技术层次
--------------------------------------------------------------------------------
ODBC        差      较高      差        可进行底层控制               否    底层
--------------------------------------------------------------------------------
MFC ODBC    好                一般      通用标准,应用广泛           否    高层
--------------------------------------------------------------------------------
MFC DAO     好      较高      一般      访问JET性能最好              能    高层
--------------------------------------------------------------------------------
OLE DB      较难    高        好        可访问非关系DB               能    底层
--------------------------------------------------------------------------------
ADO         最好    高        好        可访问非关系,有多种编程接口 能    高层
--------------------------------------------------------------------------------  

数据库——ODBC连接 强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan ●背景 开始机房重构了,期末之前就在登录,期末期间两周都没动机房,现在还是在机房登录这里徘徊,由于机房重构的时候还需要参看之前做的机房收费系统来找灵感,想思路,自然而然就需要用到数据库了,在连接ODBC的时候还是花费了一些时间(比预计的时间要久),自己也是亲自验证了一个道理:... 阅读详情

相关推荐

【2024最新对比】ODBC vs JDBC:10倍提升数据库性能的秘密武器

ODBC和JDBC是数据库连接的两大主力,2024年对比显示各有优势。ODBC支持多语言,JDBC专为Java设计。性能方面,JDBC在Java环境下更胜一筹。优化技巧:使用连接池、批量操作和参数化查询可提升10倍性能。JDBC优势在于原生Java支持、简化异常处理和面向对象设计。选择时,Java项目首选JDBC,跨语言考虑ODBC。掌握这两种技术,轻松应对大数据挑战。想深入了解如何选择最适合你项目的数据库连接技术?点击阅读全文,解锁数据库性能提升的秘密武器!#数据库优化 #JDBC #ODBC #大数据

一个8年大数据开发工程师的碎碎念 4346

SQL Server 如何安装 OLEDB 驱动

意识到这种情况,Microsoft 发布了 Office 2007 以及随之而来的新版 JET,现在称为 Office Access Connectivity Engine (ACE),它允许与 JET 4.0 及其以前的版本兼容,并支持新的 Access 格式 (. accdb),它为 Access 带来了多项新功能,例如多值字段、安全性和加密改进。但是他们之间有什么变化呢?在 Access 2010 中,ACE 驱动程序获得了对 64 位平台的支持,其核心被认为是 JET 驱动程序的 64 位版本。

5584

计算机odbc数据源管理位置,ODBC 常见数据源配置整理

1. 简介我们用golang做odbc驱动开发的任务并不多,隔段时间可能会来一个。每次开发会忘记如何配置数据源和对应的数据源链接参数配置。这里做一个整理。1.1 ODBC和JDBCODBC(Open Database Connectivity)是一组对数据库访问的标准API,其最大的优点是以统一的方式处理所有的数据库。JDBC(Java Database Connectivity)是Java与数据...

weixin_39946327的博客 4012

数据库-ODBC操作

由于ODBC只提供了一种标准的API,因此某些特定于数据库引擎的功能可能无法直接通过ODBC访问,你可能需要使用特定数据库的本地API来实现这些功能。虽然ODBC提供了一定程度的平台独立性,但在不同的操作系统上可能会有一些细微的差异,这可能需要在跨平台应用程序中进行一些额外的处理。ODBC提供了一种标准的API,使得应用程序可以在不同的操作系统上连接和操作数据库,从而实现了一定程度的平台独立性。配置和管理ODBC数据源可能需要一些额外的工作,特别是对于一些复杂的数据库配置,可能需要更多的时间和精力。

evesmith520的博客 1万+

知识分享:ODBCOLEDBDAORDOADO区别与联系

转载自 天缘博客 OSI模型层次看(非绝对,部分有交叉):最底层数据源——ODBC——OLE DB——RDODAOADO——应用程序。一、ODBCODBC全称Open Database Connectivity,ODBC建立一组规范(标准),并提供一组对数据库访问的标准API函数接口。ODBC包括ODBC管理器、ODBC API、ODBC驱动管理器、ODBC数据库驱动管理器四个

开心果壳 2180

ADO,OLEDB,ODBC,DAO,RDO区别说明

http://www.jb51.net/article/31286.htm http://wenku.baidu.com/link?url=D7iis1tmkyXTCqjsezsvYtYHWG8jK-4n6pMUzqwga6C0XhSVpme83_2-g3QRyXnwNRAE7O8v8xoWlR_Pl1Yf_sp_0q6AMSFOiWYJywqTMxi   ADO,OLEDB,ODBC,DA...

weixin_33817333的博客 91

ADODAORDOODBCOLEDB、JDBC、BDE数据库访问技术的区别

DAO,RDO等属于逐渐被淘汰或者一般人很少用的技术,本书不做相应的介绍。ADO,OLEDB,ODBC,JDBC都将在本书中详细论述。 ADODAORDOODBCOLEDB、JDBC、BDE、数据库访问技术                                    ADO---Active Data Objects,活动数据对象  DAO---Data Access Objec...

win2000_li的专栏 1654

DAORDOADO、OLE DB 、ODBC and JDBC relation

1.DAO: Data Access Object 数据访问对象         1993年Microsoft为了让程序员能够存取Access数据库,使用OLE   Automation技术封装了Jet   Engine   。这些使用Jet   Engine   存取Access数据库的OLE   Automation   Object便称为Data   Access   Object(DA

吃螃蟹的虾子 3902

odbc, ado, rdo, oledb,

昨天写了个天缘网址管理小工具FavorMan,用到了ACCESS数据库,自然就会涉及到数据库的访问问题,现在再提ADODAOODBC等几乎没什么新鲜感了,不过还是记录一下留个档,这次先整理一下这几种常用数据库接口或规范之间的区别与联系,方便参考。 演进路标(从早到晚):OD

sony315的专栏 726

ADO,DAO,RDO,OLE DB,ODBC的基本认识

DAO (Data Access Objects) 定义:DAO(数据访问对象)是一种应用程序编程接口(API),存在于微软的Visual Basic中,它允许程序员请求对微软的Access数据库的访问。DAO对象封闭了Access的Jet函数。通过Jet函数,它还可以访问其他的结构化查询语言(SQL)数据库。 知识点: 1、DAO最早是给Microsoft Access 所使用,

程序媛~ 2202

ADO,OLEDB,ODBC,DAO区别

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

cx_wzp的专栏 973

DAORDOADO、OLE DB 、ODBC and JDB

DAORDOADO、OLE DB 、ODBC and JDB

the7thsense的专栏 1282
上一篇: 安装程序自动打包.net Framework、MDAC
下一篇: C# 调用声音文件,包括API函数和调用VisualBasic(vs2003)函数
Rya
Rya
博客等级 码龄22年 2粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值