用Visual Basic访问数据库有许多可供选择的方案,但是选择那种方案更能使开发队伍和应用软件在今天处于有利位置并且适应将来的发展方向呢?这些解决方案各有什么特点?本文将说明这些问题,帮助使用VB5的用户和准备使用VB5的用户选择和决定哪种数据库访问方案对现在很有意义而且适应将来的应用程序。
当今,RDO2.0是Visual Basic访问关系型ODBC数据源的最佳界面接口,就如DAO/Jet是Jet和ISAM(顺序索引查找方法)类型数据源首选的访问接口一样。这两种方法都完整的集成于Visual Basic中,并且形成了Visual Basic核心的数据访问策略。RDO2.0的数据访问速度远快于RDO1.0的访问速度,并且RDO和DAO都已发展为相当成熟的技术。因此假如用户需要访问ODBC数据源,可以使用RDO;如果需要访问ISAM或Jet类型数据源,那么就使用DAO/Jet。
Active Data Objects(ADO)作为另一种可供选择的技术出现,正在逐渐代替其他数据访问接口。由于RDO同ADO的体系结构非常相似,因此当需要将RDO数据接口转换为ADO时,仍可以使用RDO设计的代码。
有人曾提出这样的问题:是否现在就使用ADO?虽然VB5使用ADO的数据访问接口是可能的,但对于目前ADO的使用状况,将RDO2.0或DAO3.5同ADO做比较显得意义并不很大。所以回答是:如果感觉方便,还是尽早转移到ADO,这意味着应用软件对各种数据访问接口将继续予以支持。ADO是独立于开发工具和开发语言的简单而且容易使用的数据接口,同ADO相比,其他数据访问接口都会黯然逊色。
所有的数据源都可以通过ADO来访问,在今天已逐渐成为现实。
VB访问数据库技术的历史综观过去的几年,使用Visual Basic的客户曾设计出数不胜数的程序和组件来建立商务解决方案。大约80%以上的应用程序是用来访问以下这些数据的:ASCII文本文件、SQL数据库以及大型机数据库。早期的Visual Basic数据访问工具只是简单的ASCII文件的访问工具,极少数SQL Server的前端应用程序是使用鲜为人知的数据接口VBSQL编写的。然而,在Visual Basic 3.0时代许多用户强调需转移访问包含远程数据源的ISAM数据,为此Microsoft设计了Microsoft Jet Database Engine(或简称为Jet)和Data Access Object(DAO),使得Visual Basic Access开发人员很容易地同Jet接口。直至前两年,对Visual Basic和其使用者的需求又包含了更快的访问远程数据和对ODBC数据源访问的优化。
当选择在此讨论的哪种技术是最佳技术时? 要注意两点:代码的重用和开发者实现选择的数据库访问方案的能力。设计者常常为实现或追求一种更特别的性能而使用有更多控件的奇异方案,这样设计出来的应用程序只会支持起来更复杂或维护时更困难。开发人员和他们的管理人员需要在Visual Basic的开发小组和各种数据库接口开发小组中注意避免这种趋势。这些小组协调努力简化VB5中的数据访问接口会使程序的安全性和速度更好。VB5也包含了全新的查询连接生成器,即User Connection设计器,它使用Visual Basic新的ActiveX设计器体系结构,对要编程的数据访问提供设计时的支持。允许在设计时创建连接并查询对象(基于RDO rdoConnection和rdoQuery对象)。并把这些连接和查询对象当作工程级对象。可预先设置属性、定义新属性和方法并给对象编写代码来捕捉事件。
这不仅为响应由连接和查询而引起的事件,而且为在运行时调用已有存储过程和用户定义的查询提供了简单的方法。使用User Connection设计器这种技术,代码可减少10倍,性能却没有任何损失。
现在用VB5来建服务器端组件或前端应用程序,可以使用的数据库接口方案至少有九种。每一种方案都可满足用户特定的需要,比如特殊的数据源和用户开发的技能等。
Visual Basic访问数据库的现状下面的表格列出了目前在VB5中有效的数据访问接口方法,一部分是简单的应用程序接口界面(APIs),但大部分是组件对象模型界面(COM)。这两类数据库接口界面事实上在任何一种开发语言中都包括。
接 口 界 面
访 问 对 象
16/32 ?支 持
VBSQL
通 过DB-Library 访 问 微 软 的SQL Server
16 位 和32 位
ODBC API
任 何 一 种ODBC 数 据 源
16 位 和32 位
DAO/Jet
本 地 的Jet/Access .MDB、 顺 序 索 引 数 据 库(ISAM) 和 任 何ODBC 数 据 源。
16 位 和32 位
DAO/ODBC Direct
任 何 一 种ODBC 数 据 源( 经 过RDO)
32 位
RDO 2.0
任 何 一 种ODBC 数 据 源(Level Ⅰ 或 Ⅱ)
32 位
ADO *
任 何 一 种ODBC 数 据 源 和 任 何 经 过OLE DB 界 面 接 口 的 数 据 源
32 位
*ADO不包括在VB5中,目前的许多网络产品支持ADO如:IIS、Visual Studio等,也会发行在VB的下一版本VB6中。
上表列出了用VB5程序代码访问数据库的几种接口界面,但是许多开发人员也使用一些数据库绑定的控件来实现一些简单重复的功能如:用户数据的输入、显示、筛选等接口界面。VB也支持对多种数据源访问的控件,这些控件在VB和COM界面接口之间起着媒介作用。这些控件提供了一种减少代码实现数据访问的途径,该方法简化了代码并使程序员不必亲自处理检索和更新数据的底层结构和机制。它赋予程序员很大的灵活性,因为可以使用同样的对象、属性和方法来处理各种不同的数据库格式。同时,如果从一种数据库格式变到另一种格式(例如,将本地的Microsoft Access数据库转换为网络上的SQL Server数据库),只需变动少量的代码就可以适应这种改变。甚至可以创建这样的应用程序,在单一的查询或报表中连接来自多个不同数据库的表。
数 据 绑 定 控 件
访 问 对 象
16/32 位 支 持
Data Control
DAO/Jet 数 据 界 面 接 口
16 位 和32 位
Data Control/ODBC Direct
DAO/ODBC Direct 数 据 界 面 接 口
32 位
RemoteData Control/RDC
RDO 数 据 界 面 接 口
32 位
Advanced Data Connector/ADC *
ADO 数 据 界 面 接 口
32 位
*ADO不包括在VB5中,目前的许多网络产品支持ADO如:IIS、Visual Studio等,也会发行在VB的下一版本VB6中。
经过数年发展,ODBC技术日臻完善已成为访问远程数据的主要方法,而Jet成为本地Jet和ISAM数据接口的首选方案。虽然这些方法在不同程度上有功能交迭的地方,在论证选用数据库访问的方法时,主要还应满足用户在特殊应用程序中对具体数据接口的访问。并不是所有人对数据访问中的一些缩写词都了解。下表从VB的观点简要介绍这些缩写词的含义和各种数据访问方法的功能比较。
数据访问接口
功 能 及 含 义
ADC
高级数据连接器(Advanced Data Connector):提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLE DB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。
ADO
Active数据对象(Active Data Objects):ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。
DAO
数据访问对象(Data Access Objects):是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM数据库,使用DAO/ ODBC Direct功能可以实现远程RDO功能。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL(数据描述语言)的功能很类似。 DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。
Jet
数据连接性引擎技术(Joint Engine Technology):是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。
ODBC
开放式的数据库连接(Open Database Connectivity):是一种公认的关系数据源的接口界面。它快而轻并且提供统一接口的界面,ODBC对任何数据源都未作优化。
ODBC Direct
是一种基于DAO对象的新的DAO模式,其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。
OLE DB
是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO-技术的应用程序或用于C++的开发者开发定制的数据库组件。OLE DB不能被VB直接调用。
RDC
远程数据访问控件(RemoteData Control):是一种对RDO数据绑定的控件。可以输出特定的结果集到数据源控件。
RDO
远程数据对象(Remote Data Objects):远程数据对象和集合为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法。可以在对象和集合之间建立起关系,这些关系就代表了数据库系统的逻辑结构。RDO是ODBC API的一个浅层界面接口。是专为访问远程ODBC关系数据源而设计的。
VBSQL
是Visual Basic结构化查询语言。是一种基于API的接口方法,几乎与C的DB-Library API相同。VBSQL只支持微软的SQL Server。VBSQL快而且轻但不支持对象界面。
Visual Basic访问数据库的前景近来随着Web应用软件的迅速发展和现有数据存储形式的多种多样,Visual Basic访问数据库的解决方案面临诸如快速提取分布于企业内部和外部有用商业信息等的多种挑战。为此Microsoft提出一种新的数据库访问策略,即“统一数据访问”(Universal Data Access)的策略。“统一数据访问”提供了高性能的存取包括关系型和非关系型在内的多种数据源,提供独立于开发工具和开发语言的简单的编程接口,这些技术使得企业集成多种数据源、选择更好的开发工具、应用软件、操作平台、建立容易维护的解决方案成为可能。
“统一数据访问”(Universal Data Access)的基础是Microsoft的数据访问组件。这些组件包括ActiveX Data Objects(ADO)、Remote Data Service(RDS,也称“高级数据连接器”或ADC)、OLE DB和ODBC。