中国计算机报 安徽计算机一级考试
李昫
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数据库访问的支持功能非常好。
更多阅读
我与中国教师报的故事 读中国教师报有感
相逢是首歌,相聚是种缘,从相遇到相识,从相知到相守,我们携手走过了一个个春夏秋冬。在岁末年初之际,让我们一起回首记忆中的美好,分享心中的故事……我与她“一见钟情”□ 张学勇第一次见到《中国教师报》,是在2006年的春天。那年,学校
监管力量薄弱、专业人才匮乏第A03版 医疗器械 中国医药报电子版2 中国医药报 临海
监管力量薄弱、专业人才匮乏来源:中国医药报 2014-11-13 第A03版 医疗器械本期连线主题:基层渴望医疗器械专业监管人才主持人:本报记者 赵宗祥嘉 宾:山东省德州市食品药品监管局 韩学辉安徽省马鞍山市食品药品监管局 罗 章江苏省宿迁市
董事长王德军接受《中国医药报》专访 翼龙贷 专访董事长
近日,迪沙药业集团董事长王德军接受了《中国医药报》资深记者方剑春女士的专访。4月11日,《中国医药报》在四版显著位置用大篇幅报道了此次高端访谈。访谈报道以《质量和品牌是发展之本》为题,从“诚信迪沙、优质药品”、“全国领
第A08版 传统医药 中国医药报电子版20141118期 读报社区,我读报 中国医药报电话
强化膏方正规宣传与督查来源:中国医药报 2014-11-18 第A08版 传统医药□ 严国进秋风紧,膏方热,又到冬令进补时。随着中医药知识的不断普及,膏方已逐渐成为
计算机认证考试 计算机二级报名
计算机认证分国家认证和企业认证:国家认证的有:1.全国计算机等级考试 (简称:等考) 主考单位:国家教育部 (主要面向在校非计算机专业学生)2.全国计算机技术与软件专业资格(水平)考试 (简称:软考) 主考单位:国家工业和信