数据访问的实质
Norvin Leach
MSDN Online 新闻编辑1997 年 10 月 13 日上周,我收到一名开发人员的信,他抱怨说有关数据访问的缩写实在太混乱了 — ADO、
RDO、DAO。确实很多,但是,这些对于您的工作却是极其重要的,因此有必要澄清它们
。我们的世界到处需要进行数据访问。所有大的数据库经销商 — Microsoft、IBM、Oracl
e — 都意识到了这一点。世上有太多的信息,也就产生了太多类型的数据库。IBM 和 Oracle 这样的公司认为,解决方案是将所有内容都放进一个数据库结构。这是
个好主意,但我们认为这不可行。相反,我们想要提供一种共同的方式来获取按照不同
格式存储的数据。我们想关注于访问而不是关注于数据库。这意味着您可以使用相同的
前端来访问关系型数据库、主体数据库、Excel 电子表格和文本文档,所有这些都保存
在不同的地方。我们将通过 ADO 和 OLE DB 做到这一点。您已经听说过这些名字,它们是我们的“通用
数据访问”策略的一部分,但是我想有必要解释一下它们是如何从其他数据访问策略进
化来的。了解这些是非常重要的,因为在当前最受欢迎的接口 (RDO) 和下一代接口 
(ADO) 之间存在着兼容性的鸿沟。如果理解了这段历史,您就会明白应该何时、如何以
及是否有必要将代码从 RDO 转化为 ADO。这里我想要做的是,按顺序回顾过去六年中相关数据访问技术的发展史。(当然,为了
清晰,我忽略了一些内容,例如 ESQL C。)VBSQL
这是 VB 和 SQL Server 之间的一个老接口。它是在基于 C 语言的 DB Library 上建立
的,那是我们在 SQL Server 上使用 Sybase 的年代。它能与 SQL Server 的后续版本
兼容,但并不支持新的功能。如果您使用的是这种接口,那么现在应该是升级的时候了
。这一点也适用于 DB Library 本身。ODBC
ODBC 可能是最广泛使用的与关系型数据的接口。它赋予您广泛的访问能力,但它是一个
低级接口,在访问更复杂的应用程序时您就要付出代价。另外,它也无法很好地获取非
关系型数据。我们发现,开发人员通常喜欢通过高级对象接口,如 DAO、ODBCDirect、R
DO 或 ADO 等来访问 ODBC。DAO(数据访问对象)
这是第一个基于对象的接口,用 Visual Basic 语言编写。它封装了 Jet 功能(Jet 是
 Access 数据库的引擎),并允许您创建数据绑定(也叫 data-aware)控件。现在,数
百万人在使用它。它唯一的不足是缺乏灵活性。它还通过 Jet 访问 SQL 数据,这会增
加开支。ODBCDirect
这是 DAO 的一个变种,它允许您不通过 Jet 数据库引擎访问 ODBC,它实际上就是使用
 RDO,但带有 DAO 对象名称。RDO(远程数据对象)
这是一种紧凑、轻量级的与 ODBC 的接口,是在几年前推出的。它模仿了 DAO 对象模型
,并且使开发人员获得 ODBC 低级功能的方式变得更加容易。它在对 SQL Server 的数
据访问中非常流行,但其能力仅限于获取 Jet 或 ISAM 数据。另外,它也只能通过现有
的 ODBC 驱动程序访问关系型数据库。我们正在超越 RDO,但是如果您目前已经拥有一
个运行良好的 RDO 应用程序,那就没有必要去改变它。后面我将谈到这一点。OLE DB
欢迎使用我们的样板。这是通往“通用数据访问”模型的大门。它是一个低级的基于对
象的接口,且不限于关系型数据、ISAM、Jet 或其他任何东西。它可以处理任何类型的
信息,也可以是您极少直接面对的东西,除非要开发数据存储或数据库引擎。您将通过 
ADO 访问它,并且通过一个 OLE DB 提供者进行数据存储。ADO(ActiveX 数据对象)
这是与 OLE-DB 的应用程序级接口。它外表与 RDO 和 DAO 相似 (换句话说,它具有相
似的对象模型,因此您能够轻易掌握它),但却是这些技术的超集。您可以使用 ADO、通
过 OLE DB 服务提供者来处理数据,也可以通过 OLE DB for ODBC 接口来访问现有 
ODBC 驱动程序。它是属于未来的。比起我们的任何其他接口,它提供有更广泛的访问方
式,并且我们建议您为将来的项目开始使用这种技术。只是有一个问题,它不与 RDO 向
后兼容。它似曾相识,因此您可以快速掌握,但是您不能混合代码。那么我应该怎么办?
将 RDO 代码转换为 ADO 代码不能一蹴而就,但也不象使火箭升天那样难。如果没有必
要就不用转换,而且不要害怕学习一种新技术。如果您现在拥有还在运行的 RDO 应用程
序,那么就让它运行吧。我们将继续支持 RDO。这对大多数现有程序已经足够了。但是
将来会认为 ADO 是访问数据的首选方式。如果您必须将您的代码从 RDO 转换为 ADO,
我们将为此提供指导。但是这些还没有准备好 — 因为它们将是明年的技术。在发布时
,MSDN Online 会及时通知您。有关今天所讲述的详细内容,请查阅我们的 Universal Data Access Web 站点(http://www.microsoft.com/data/)。