比较ADO与ODBC的区别

ADO、DAO、ODBC、OLE DB 区别 ADO【ActiveX Data Objects】应用层的数据访问接口(API【Application Programming Interface,应用程序编程接口】)用以实现访问关系或非关系数据库中的数据。 ADO是基于全新的OLE DB技术而设计的.是一种基于应用程序层的数据访问接口.它是DAO/RDO【应用程序接口RDO(application program interface, A 阅读详情

       有很多种使用数据库的方法,对大多数数据库来说,选择C++这种产品也许并不适宜。我们知道,像dBASE IV,FoxPro,Oracle和Access这样的产品是完全以数据库管理为中心的。事实上,这些产品非常善于创建数据库管理器,以至于它们确实并不善于做太多其它的工作。即使要用更通用化而非更专用化的数据库产品来执行一些类型的工作,在使程序设计更容易这一方面,像VisualBasic和Delphi这样的RAD(Rapid Application Develop(快速应用开发)环境也要比Visual C++强很多。

       你是不是对我的说法感到很奇怪?下面我就要谈一谈,在谈到使用数据库管理系统(DBMS)这个话题时,用Visual C++实际上可以做些什么。虽然上述其它语言使得编写成熟的包括用户界面和高速搜索能力的DBMS就像孩子做游戏一样容易,但是,它们缺少Visual C++可以提供的某些重要东西。你不能为使用Access的数据库轻松地编写出实用程序。正像实用程序的定义所说的,实用程序应该很小并且具备可移植性——Access应用程序却不是这样。即使用Access这样的产品创建的程序可以很小并且可以移植,你仍有其它方面的需求:底层的功能。

注:编写数据库实用程序及驱动程序时,可以选择Visual C++语言。

        想像一下,使用像Visual Basic这样的语言来与实时数据采集设备打交道的情况。在进行底层访问时,RAD的保护环境常常使程序员不能进行有效的处理。当然,数据采集设备几乎不依赖于简明的连接。你打算如何把Visual Basic和外部的数据源连接起来呢?数据源甚至可能不了解Windows,DOS或类似的成熟的操作系统。

        只要使用得当,很容易看到Visual C++是一种不可或缺的数据库管理工具。针对大规模的应用程序,即使你仍想依赖于Visual Basic这样的RAD语言,也请考虑一下Visual C++,它创建的程序规模小、提供底层访问并能提供实时访问。事实上,你可能还没有想到,Visual C++数据库应用程序的市场是很有潜力的。随着人们在旅途中越来越多地使用膝上型和掌上型电脑,这两类电脑上的数据库应用程序也变得越来越普通。你也许能够适应今天的膝上型电脑上的Access应用程序,但谈到硬盘大小或内存需求时,公司里较老的膝上型电脑可能就达不到要求。运行Windows CE的掌上型电脑在运行这个Access应用程序时,肯定会发生故障。在这一数据库市场的新领域,Visual C++提供了无价无限的工具。

        Web链接 谈到使用Visual C++和数据库,其实你并不孤单。从一开始就有数据库专用新闻组提供有关数据库创建技巧的帮助,比如microsoft.public.access。不过,这些新闻组提供的是通用信息,对实际编写应用程序并非全都那么有用。专门针对Visual C++问题的新闻组是microsoft.public.vc.database和microsoft.public.vc.mfcdatabase。如果你决定用ODBC访问数据库,可能还要查看一下microsoft.public.odbc.sdk新闻组,它讨论的不仅仅是SDK(Software Development Kit,软件开发工具包) 。对最新技术感兴趣的程序员可以查阅microsoft.public.ado新闻组,或者microsoft.public.oledb(对象链接和嵌入数据库)新闻组,前者讨论 ADO,后者讨论ADO的基础技术。在microsoft.public.ado.rds有一个ADO子组,它讨论远程数据访问。

既然所有的疑惑都消除了,大多数人的信心也就增强了,下面我们就介绍两种使C++访问数据库中的数据的主要方法:ODBC(开放数据库互连)和ADO(ActiveX数据对象)。在本章中,将介绍这两种类型的访问方法,但我想你会发现,ADO方法是针对新的程序设计情形而采用的。它克服了早期技术的诸多限制,依赖于Microsoft新的底层访问方法OLE-DB(对象链接和嵌入数据库)。在本书的后面我们会看到,用ADO和Visual C++提供的各种向导来汇集数据库工程,其速度有多快。

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

另:用ADO连接数据库的三种方式及性能比较:

用ADO连接数据库的三种方法及其性能比较



ADO连接数据库通常有三种方法:System DSN Connection,DSN-less Connection 和 OLE DB Connection,这是大家都很熟悉的,它们的使用方法如下:

(注:三种方法的区别在于使用的是哪个关键字 - DSN,Driver,Data Source,Provider。UID,PWD 是 ODBC 的标记,User ID,Password 是 OLEDB 的标记。特别指出的是 Data Source 在 ODBC 标记中表示数据源,等同于 DSN,在 OLEDB 标记中表示服务器名或数据库名。)

'System DSN Connection
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open "DSN=your_dsn;UID=user_name;PWD=password;"
'或者用 OLEDB 标记
cnn.Open "Data Source=your_dsn;User ID=user_name;Password=password;"

'DSN-less Connection
'以SQL Server为例
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open "driver={SQL Server};server=server_name;uid=user_name;pwd=pwd;database=pubs"

'OLE DB Connection
'以SQL Server为例
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open "provider=sqloledb;data source=server_name;initial catalog=pubs;user id=user_name;password=pwd;"

下面,我们讨论一下它们各自的性能。

从本质上说,System DSN 和 DSN-less Connection 都是通过 ODBC 与数据库进行连接的,它们之间区别不大(事实上也确实如此)。有很多人说 DSN-less Connection 要优于 System DSN Connection,对这一点我不反对。(是不是前后有些矛盾,刚说它们区别不大,现在又......)我曾经分别对这两种连接测试过,但是失败了。因为我的测试数据没有规律,根本说明不了问题(或许用假设检验能比较两者的性能,不过得算死)。于是我得出了结论:没有结论!后来在网上看到一篇文章 System DSN or DSN-less Connection? 算是有了答案。

结论就是(这是原文):

These tests showed that DSN-less connection were slightly faster than System DSN Connections.The increase in performance was nothing monumental(monumental adj.纪念碑的, 纪念物的, 不朽的, 非常的);the greatest performance boost( 推进)was mere 13% faster with 64 concurrent (同时发生的事件adj.并发的, 协作的, 一致的) requests.For one,two,or four concurrent requests,there was virtually no performance improvement.In fact,no noticeable improvement is seen in a DSN-less connection over a System DSN until there are 10 or more concurrent connections.

为什么?因为 System DSN 在连接时要读注册表。

现在只有OLE DB没有说了(打字真累)。OLE DB 比 ODBC 要高效的多。

根本不用测试,这个结论是显而易见的。如果你还有些怀疑,建议去看看 连接池(Connection Pooling)介绍 那里有 MDAC framework 的图示,从图中可以看出,经 ODBC 连接是 ADO-->OLE DB-->ODBC Provider-->ODBC-->driver-->数据库;经 OLE DB 是 ADO-->OLE DB-->DB Provider-->数据库。哪个更直接?当然是 OLE DB!

Set cnn = Server.CreateObject("ADODB.Connection")
'Connection string for SQL Server
cnn.Open "Provider=SQLOLEDB;Data Source=srvName;Initial Catalog=DBname;User ID=user_id;Password=yourPassword;"

'for Access
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db_path"

连接数据库就是这么容易!


ADO与ODBC操作Excel的区别 该文档时是基于MFC使用C++语言对EXCEL进行的二次开发 立即下载

相关推荐

ODBC、OLE DB和ADO简单介绍

对ODBC、OLE DB和ADO简单介绍的简单介绍,适合数据库新手学习

知识点滴 - ODBC和ADO的区别

通常,软件应用程序是用特定的编程语言(如Java、C#等)编写的,而数据库则接受其他一些数据库特定语言(如SQL)的查询。因此,当一个软件应用程序需要访问数据库中的数据时,需要一个能够将语言相互转换的接口(应用程序和数据库)。ODBC是一个开放的接口,任何应用程序都可以使用它与任何数据库系统进行通信,而ADO是OLE DB的一个包装(它是ODBC的继承者)。ADO在用某种编程语言编写的应用程序和OLE DB(由微软开发的数据API,是ODBC的继承者)之间形成了一个中间件层。...

guoqx的专栏 1903

从零构建FOC:手把手教你实现无刷电机磁场定向控制

本文是一份详尽的FOC(磁场定向控制)实战教程,指导开发者从零开始构建无刷电机驱动系统。文章深入解析了FOC的核心算法,包括坐标变换(Clarke/Park)、SVPWM调制和双环PI控制,并对比了有感与无感方案的实现差异。通过分步调试指南,帮助读者亲手实现稳定、高效的无刷电机控制,彻底掌握其底层原理。

h3i4j的博客 514

SQL那些事儿(十一)--ODBC,OLE-DB,ADO.NET区别

一、ODBC ODBC的由来 1992年Microsoft和Sybase、Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库。随后ODBC便获得了许多数据库厂商和Third-Party的支持而逐渐成为标准的数据存取技术。 ODBC以当时的业界标准规范X/OpenCall-LevelInterface(CLI)和ISO/IEC9075-3Call-

xcymorningsun的专栏 6379

解决Keil uVision许可证管理中Unknown Product错误

嵌入式开发中,IDE工具的许可证管理是确保开发环境正常运行的关键环节。Keil uVision作为ARM架构的主流开发工具,其许可证系统采用加密验证机制,通过产品版本识别实现授权控制。当出现Unknown Product错误时,通常源于版本兼容性问题或区域发行版差异,这直接影响开发工具链的可用性。特别是在维护历史项目或使用中国特供版时,开发者常会遇到此类问题。通过分析许可证类型、调整安装配置或建立虚拟化开发环境等工程实践方案,可以有效解决这类授权验证故障,保障嵌入式项目的持续集成与交付效率。

weixin_33743248的博客 363

QTableView实现表格加载百万条数据

本文介绍用QTableView实现加载100万条数据显示到表格。 1.创建工程 用Qt Creator创建Qt Widgets Application项目,基类选择QWidget,创建好了,如图: 2.添加QTableView控件 在widget.ui中添加QTableView控件,和QPushButton,采用栅格布局,如图: 3.添加函数 头文件 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Wid

丁爸的博客 8269

AOD与ODBC之间的区别

ODBC(Open Database Connectivity,开放数据库互连)。ODBC,官方定义:开放数据库互连(ODBC)是MICROSOFT提出的数据库访问接口标准。ODBC提供了一种标准的API(应用程序编程接口)方法来访问数据库管理系统(DBMS)。简单的说,从本质上ODBC是一种接口的标准。 ADO(ActiveX Data Object,活动数据对象)。ADO (ActiveXD...

自己的选择,无论是否正确,请坚持下去,黎明就在下一刻。 862

使用 Python 构建 Reddit 热帖爬虫:抓取热门讨论帖和评论

在现代互联网中,Reddit 被誉为全球最大、最活跃的讨论平台之一,汇聚了各种主题的帖子、评论和社交互动。因此,抓取 Reddit 上的热门帖子和评论可以为我们提供一个丰富的文本数据源,可以用于情感分析、话题建模、趋势分析等应用。Reddit 提供了官方的 API,可以让开发者获取包括帖子、评论、用户信息等在内的各种数据。我们可以结合上述方法,抓取多个热门帖子,并将每个帖子的标题、作者、发布时间和评论内容保存到一个数据结构中。每个帖子的对象包含了丰富的信息,如标题、内容、发布时间、作者等。

2201_76125261的博客 381

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

原文:ADO,OLEDB,ODBC,DAO的区别 ODBC(Open Database Connectivity,开放数据库互连) 1992年,微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任...

weixin_30497527的博客 79

【LAMMPS学习】五、LAMMPS命令(8) Pair_style 势

所有LAMMPS pair_style命令如下表所示。有些样式有加速版本。这由括号中的附加字母表示:g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t = OPT。

荷塘阅色 3015

Transformer 跨界物理建模:探索模拟动态物理系统方法与实践(PINN、流体力学、有限元)

是一个由 Nicholas Zabaras 团队开发的开源项目,托管于 GitHub,旨在将 Transformer 模型(最初在自然语言处理领域大获成功)应用于物理系统的建模与预测。该项目基于论文 ​*“Transformers for Modeling Physical Systems”*​(Neural Networks, 2022),探索了深度学习中的 Transformer 架构如何通过自注意力机制和 Koopman 嵌入来模拟动态物理系统。

源代码杀手的博客 1190

文思创新笔试面试里做得不好的题总结

1.进程与线程的差别 进程是程序的一次执行.线程可以理解为进程中执行的一段程序片段.在一个多任务环境下中下面的概念可以帮助我们理解两者的区别. 进程间是独立的,这表现在内存空间,上下文环境上;线程运行在进程空间里.一般来讲(不使用特殊技术),进程无法突破进程边界存取其它进程内的存储空间;而线程由于处于线程空间内,所以同一进程所产生的线程共享内一内存空间.同一进程中的两段代码不能够同时执行,除非

靠谱-ing 1419

71、机器人与机器人控制器技术解析

本文深入解析了机器人控制器的通信接口、传感器数据采集与处理以及抓手技术三大核心技术。详细介绍了数字I/O、串行接口、总线系统和以太网等通信方式,探讨了各类传感器在焊接、装配、质量检测等场景中的应用,并阐述了手眼校准与路径校正的关键方法。同时,文章还分析了不同类型抓手的特点及选型设计原则,展示了机器人在现代工业自动化中的高效性与灵活性。通过实际编程示例与流程图,全面呈现了机器人系统的集成与控制逻辑。

gin88的博客 275

ODBC、OLE DB、 ADO的区别

一、ODBC ODBC的介绍 ODBC(Open Database Connectivity),开放数据库互连。ODBC是上个世纪八十年代末九十年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口。ODBC提供一个单一的API,可用于处理不同数据库的客户应用程序。使用ODBC API的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。 ODBC(Open Da...

羞羞滴小朋友 8186

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ODBC、OLEDB、ADO、ADO.NET之间的关系

相信看到这篇文章的人,心中肯定有这样的想法:ODBC、OLEDB、ADO、ADO.NET貌似都是访问数据库的东东,那么他们之间有什么区别,又有什么联系呢?不要着急,待我慢慢道来。 先说ODBC,官方的定义是这样的,开放数据库互连(ODBC)是MICROSOFT提出的数据库访问接口标准。ODBC(Open DatabaseConnectivity,开放数据库互连)提供了一种标准的API(应

梦想起飞的地方,必须用心去经营 9843

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

一文详解ODBC、OLEDB、ADO、ADO.NET之间的关系

相信看到这篇文章的人,心中肯定有这样的想法:ODBC、OLEDB、ADO、ADO.NET貌似都是访问数据库的东东,那么他们之间有什么区别,又有什么联系呢?不要着急,待我慢慢道来。 一、ODBC ODBC(Open Database Connectivity,开放数据库互连)。 ODBC,官方的定义是这样的,开放数据库互连(ODBC)是MICROSOFT提出的数据库访问接口标准。ODBC(Op...

MIss-Y的博客 9295

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ODBC、OLEDB、ADO

相信看到这篇文章的人,心中肯定有这样的想法:ODBC、OLEDB、ADO、ADO.NET貌似都是访问数据库的东东,那么他们之间有什么区别,又有什么联系呢?不要着急,待我慢慢道来。 一、ODBC ODBC(Open Database Connectivity,开放数据库互连)。 ODBC,官方的定义是这样的,开放数据库互连(ODBC)是MICROSOFT提出的数据库访问接口标准。ODBC(Open DatabaseConnectivity,开放数据库互连)提供了一种标准的API(应用程序编程接...

顺其自然~专栏 3758

ODBC和ADO区别

ODBC和ADO区别、ODBC(Open DataBase Connection)开放式系统互连,是一种数据库访问协议,提供了访问数据库的API接口。基于ODBC的应用程序,对数据库操作不依赖于具体的DBMS,不直接与DBMS打交道,所有数据库操作由对应DBMS的ODBC驱动程序完成,即:系统中不需要安装DBMS系统,如SQL SERVER 2005,但必须有SQL SERVER 2005的ODBC驱动程序,然后在ODBC管理器中注册数据源后,就可以在应用程序中通过ODBC API访问该数据库。     

mythic_y的专栏 2万+

ADO与ODBC之间的关系

文章目录概念:关系:例子:对比:1.ADO跨平台性2.ODBC协议的统一性总结: 概念: ODBC(Open Database Connection,开放式数据互连)是访问数据库的一个统一接口标准,它允许开发人员使用ODBC API(应用程序接口)来访问多种不同的数据源,并执行数据操作。 ADO的概念:ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了...

优快云博客专家、华为云享专家、Java领域新星创作者 2626

ADO与ODBC的区别

有很多种使用数据库的方法,对大多数数据库来说,选择C++这种产品也许并不适宜。我们知道,像dBASE IV,FoxPro,Oracle和Access这样的产品是完全以数据库管理为中心的。事实上,这些产品非常善于创建数据库管理器,以至于它们确实并不善于做太多其它的工作。即使要用更通用化而非更专用化的数据库产品来执行一些类型的工作,在使程序设计更容易这一方面,像VisualBasic和Delphi这样

tyt2008cn的专栏 1141
上一篇: 千兆以太网技术
下一篇: AJAX和SOAP——异步数据和XML获取
justmuch
博客等级 码龄21年 51粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值