西安景区标识牌哪家好:中国计算机报

来源:百度文库 编辑:九乡新闻网 时间:2024/05/01 00:58:41
浅谈visual basic 6.0 的数据库功能
李昫
visual basic(以下简称vb)是微软公司为企业应用软件而提供的开发工具。它之所以越来越受到用户的欢迎,除了其功能强大、使用方便外,还有一个很重要的特点是它的强大数据库功能,尤其是它的最新版本vb6.0更是为开发者提供了一个全面的数据库解决方案。下面,我们通过分析三种数据库接口控件的特点来加以说明。
我们打开vb6.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控件)我们在vb3.0上就已经用过。它是jet数据库引擎的接口,专门用来访问本地的jet和诸如access、btrieve dbase、foxpro和paradox等isam数据库。显然,当访问本地数据时,采用dao/jet是一种最理想的方法。但是,当要与远程数据库打交道时,虽然dao/jet也能访问odbc数据源,但性能不太理想。另外,与直接调用api接口和使用rdo相比,处理远程数据库的功能有限。
dao/odbc direct
从dao3.5开始(vb6.0使用的是dao3.51版),由于加入了odbc direct,使dao可以提供一个到远程数据对象(remote data objects)的接口。因为odbd direct不使用消耗资源的jet数据库引擎,当访问远程数据源时,它的性能超过dao/jet,但不具备dao/jet数据引擎中具备的数据库安全功能。图1是dao/odbc direct的对象模型。

图1 dao/odbc direct对象模型
odbc direct的dao对象模型的结构没有dao/jet数据引擎的结构复杂。虽然odbc direct执行的功能与rdo不一样,但它可以让我们通过一个类似dao的对象模型来使用rdo的远程数据访问特性。
rdo(远程数据对象)
rdo提供了一系列的对象,用来满足远程数据访问的特殊要求。在 odbc api 和驱动程序管理器之上,rdo 实现了很薄的一个代码层,用来建立连接、创建结果集和游标,并且使用尽可能少的工作站资源执行复杂的过程。如果代码创建了 odbcdirect workspace 对象,那么 rdo 也是可以被 dao 访问的。图2说明了rdo的对象模型。
一直以来,rdo都是用于visual basic的所有基于com的数据访问接口中性能最好的一种。利用 rdo 和 remotedata 控件,应用程序不需使用本地的查询处理程序即可访问 odbc 数据源。这意味着,在访问远程数据库引擎时,可以获得更好的性能与更大的灵活性。因此,rdo特别适用于对远程odbc数据源的访问。

图2 rdo对象模型
虽然rdo不支持某些dao/jet特性,例如基于表的接口或ddl(data definition language 数据定义语言),但rdo支持稳固的企业级数据功能。当与通过odbc驱动器(如oracle和sql server)访问的关系数据打交道时,会知道这种功能最适合于rdo方式的控件(即我们在vb6.0中所见到的msrdc控件)。
ado(activex数据对象)
ado最初是专门用于active server page的数据访问接口,后来逐渐演变成满足所有数据访问需要的完整解决办法。ado的对象模型是所有数据访问接口对象模型中最简单的一种。如图3所示。注意,ado对象模型与dao和rdo相比是多么的简单。
早在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数据库功能的一次新的突破。

图3 ado对象模型
ado是ole db的com(component object model)接口,是microsoft的最新的对通用数据的全功能多机种接口。那什么是ole db呢?ole db是一种底层编程接口,用来访问许多不同类型的数据源,其中包括消息、文件系统以及其他一些非传统的数据源。ole db是一个由component object model(com)接口组成的集合,用来隐藏创建数据访问服务过程中的细节。最新vb6.0提供了一些ole db接口。我们的应用程序不能直接使用ole db接口,而须象使用dao和rdo与odbc(open database connectivity)层交互一样, 使用ado来与ole db层建立通讯。ado提供了一系列可编成对象,用来存放由ole db提供者提供的数据。
使用dao,在能创建一个数据集之前,必须首先建立和保持对数据源的连接。这意味着不仅代码行要多,而且需要管理的对象引用也较多,因此,开发出来的应用程序开销也较多。使用ado,resordset对象是数据库的主要接口,使用很少的代码就可以访问一个表或记录集。这意味着使用ado生成一个记录需要的代码较少,开销也就小。新版vb6.0的adodc控件访问记录集和更新数据库需要的资源更少。
dao、rdo和ado接口的各层
连接jet数据库引擎的dao/jet接口,是一个消耗资源的厚层,它可以直接访问jet和isan数据库,或者通过对odbc api的接口,访问其他的关系数据库。应该说,当访问本地的jet和isam数据库时,dao/jet的性能最佳。

图4 dao、rdo和ado的接口层
利用dao/odbc direct的层,这层与rdo相连接,而rdo又通过odbc api与远程数据源相连接。虽然用odbc direct连接的层比用jet连接的层多两层,但这些层很“薄”,所以用odbc direct访问远程数据源要比dao/jet性能好得多。
rdo基本上是odbc api外面的一层薄薄的“封皮(wrapper)。到目前为止,在所有访问远程数据源的数据访问层中,它的性能最高。图4说明了从应用程序往下到数据源之间存在的各种数据访问层。
ole db是microsoft最新的数据访问工具,它可以提供访问各种各样的数据源的手段。ole db不能从visual basic直接进行访问,但可以通过称为ado的com接口对它进行访问,ado可用于各种程序设计语言,包括象vbscript和active server page这样的语言。因此,ado也是开发基于web数据库应用软件的最佳手段。
结束语
随着internet/intranet的普及和应用,开发出基于web数据库的应用程序成为主流。而vb6.0 的出现,为我们提供了开发这方面应用程序的一个功能强大的开发工具。了解ado、rdo和dao之间的特点和差别,更有助于我们在开发应用程序时根据应用程序的特点进行选择。但有一点,随着ado的升级和改进,它将有可能替代其他的数据访问接口。但有一种接口它不易替代,这种接口就是dao,因为dao对jet数据库访问的支持功能非常好。