比较ADO与ODBC的区别
比较ADO与ODBC的区别,比较ADO与ODBC的区别
你是不是对我的说法感到很奇怪?下面我就要谈一谈,在谈到使用数据库管理系统(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。对最新技术感兴趣的程序员可以查阅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