VB 版 (精华区)

发信人: Sun (大灯泡), 信区: VisualBasic
标  题: 浅谈Visual Basic 6.0的数据库功能 
发信站: 哈工大紫丁香 (Sun Aug 29 13:49:10 1999), 转信

   
  李旸 

当我们打开VB 6.0,创建一个VB企业版(或专业版)工程,在工具栏中我们会发现有
三个数据库接口控件,即Data、MSRDC和ADODC。Data、MSRDC和ADODC分
别代表了三种数据访问技术,即数据访问对象DAO(Data Access Objects)技术、远
程数据对象RDO(Remote Data Objects)技术和ActiveX数据对象ADO(ActiveX Data 
Objects)技术。

DAO(数据访问对象)/JET

首先我们看一下Microsoft Jet数据库的DAO,也称为DAO/Jet。这种方式的控件(即
Data控件),我们在VB 3.0上就已经用过。它是Jet数据库引擎的接口,专门用来访问
本地的Jet和诸如Access、Btrieve dBase、Foxpro和Paradox等ISAM数据库。显然
,当访问本地数据时,采用DAO/Jet是一种最理想的方法。但是,当要与远程数据
库打交道时,虽然DAO/Jet也能访问ODBC数据源,但性能不太理想。另外,与直接
调用API接口和使用RDO相比,处理远程数据库的功能有限。


DAO/ODBC Direct

从DAO 3.5开始(VB 6.0使用的是DAO 3.51版),由于加入了ODBC Direct,使DAO
可以提供一个到远程数据对象(Remote Data Objects)的接口。因为ODBD Direct不
使用消耗资源的Jet数据库引擎,当访问远程数据源时,它的性能超过DAO/Jet,但
不具备DAO/Jet数据引擎中所具备的数据库安全功能。

ODBC Direct的DAO对象模型的结构没有DAO/Jet数据引擎的结构复杂。虽然ODBC 
Direct执行的功能与RDO不一样,但它可以让我们通过一个类似DAO的对象模型来
使用RDO的远程数据访问特性。


RDO(远程数据对象)

RDO提供了一系列对象,用来满足远程数据访问的特殊要求。在 ODBC API 和驱动
程序管理器之上,RDO 实现了很薄的一个代码层,用来建立连接、创建结果集和游
标,并且使用尽可能少的工作站资源执行复杂的过程。如果代码创建了ODBCDirect 
Workspace 对象,那么 RDO 也是可以被 DAO 访问的。

一直以来,RDO都是用于Visual Basic的所有基于COM的数据访问接口中性能最好
的一种。利用 RDO 和 RemoteData 控件,应用程序不需使用本地的查询处理程序
即可访问 ODBC 数据源。这意味着,在访问远程数据库引擎时,可以获得更好的性
能与更大的灵活性。因此,RDO特别适用于对远程ODBC数据源的访问。

虽然RDO不支持某些DAO/Jet特性,例如基于表的接口或DDL(Data Definition 
Language 数据定义语言),但RDO支持稳固的企业级数据功能。当与通过ODBC驱
动器(如Oracle和SQL Server)访问的关系数据打交道时,会知道这种功能最适合于
RDO方式的控件(即我们在VB 6.0中所见到的MSRDC控件)。


ADO(ActiveX数据对象)

早在1988年初,作为一种发展策略,Microsoft就推出了Universal Data Access,用
于读取所有类型的信息,而不管数据存储在本机上,还是存储在远程机上。这种计
划是建立在开放工业标准(例如ODBC和Distributed Component Object Model)基础
之上的。Universal Data Acces由许多组件组成,其中就包括ADO,它取代了DAO
和RDO两种技术。ADO的优势就在于它既能在Visual Basic程序中使用,也能在由
Active Server Page构成的Web站点上使用。因此,ADO技术成为Visual Basic数据
库功能的一次新的突破。

ADO是OLE DB的COM(Component Object Model)接口,是Microsoft的最新的对通
用数据的全功能多机种接口。那什么是OLE DB呢?OLE DB是一种底层编程接口,
用来访问许多不同类型的数据源,其中包括消息、文件系统以及其它一些非传统的
数据源。OLE DB是一个由Component Object Model(COM)接口组成的集合,用来
隐藏创建数据访问服务过程中的细节。最新VB 6.0提供了一些OLE DB接口。我们的
应用程序不能直接使用OLE DB接口,而须像使用DAO和RDO与ODBC(Open 
DataBase Connectivity)层交互一样,使用ADO来与OLE DB层建立通讯。ADO提供
了一系列可编成对象,用来存放由OLE DB提供者提供的数据。

使用DAO,在能创建一个数据集之前,必须首先建立和保持对数据源的连接。这意
味着不仅代码行要多,而且需要管理的对象引用也较多,因此,开发出来的应用程
序开销也较多。使用ADO,Resordset对象是数据库的主要接口,使用很少的代码
就可以访问一个表或记录集。这意味着使用ADO生成一个记录需要的代码较少,开
销也就小。新版VB 6.0的ADODC控件访问记录集和更新数据库需要的资源更少。


DAO、RDO和ADO接口的各层

连接Jet数据库引擎的DAO/Jet接口,是一个消耗资源的厚层,它可以直接访问Jet和
ISAN数据库,或者通过ODBC API,访问其它关系数据库。应该说,当访问本地的
Jet和ISAM数据库时,DAO/Jet的性能最佳。



图1 DAO、RDO和ADO的接口层


如图1所示,DAO/ODBC Direct层与RDO相连接,而RDO又通过ODBC API与远程
数据源相连接。虽然用ODBC Direct连接的层比用Jet连接的层多两层,但这些层很
“薄”,所以用ODBC Direct访问远程数据源要比DAO/Jet性能好得多。

RDO基本上是ODBC API外面的一层薄薄的“封皮(Wrapper)”。到目前为止,在所
有访问远程数据源的数据访问层中,它的性能最高。

OLE DB是Microsoft最新的数据访问工具,它可以提供访问各种各样的数据源的手
段。OLE DB不能从Visual Basic直接进行访问,但可以通过称为ADO的COM接口对
它进行访问,ADO可用于各种程序设计语言,包括像Vbscript和Active Server Page
这样的语言。因此,ADO也是开发基于Web数据库应用软件的最佳手段。

随着ADO的升级和改进,它将有可能替代其它的数据访问接口。但有一种接口它不
易替代,这种接口就是DAO,因为DAO对Jet数据库访问的支持功能非常好。

 



 
 
     
     
--
〖小糊涂虫2000灌水机〗

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: sun@hope.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.308毫秒