VB远程数据库访问方法

来源:互联网 发布:mac应用无法删除 编辑:程序博客网 时间:2024/06/05 11:49

VB远程数据库访问方法

阚志刚 马瑞民 袁文翠

  摘 要 本文介绍了VB提供的四种访问远程数据库的方法:数据访问对象、远程数据访问对象、开放式数据库互连API函数和VBSQL API函数,并给出了每种方法的优缺点。

  关键词 远程数据库访问,数据库引擎,Data控件,ODBC API

1 引言

  作为一种优秀的开发工具,VB(Visual Basic)不但能够访问本地数据库,而且还提供了访问远程数据库的方法:(1)利用Data控件、依附控件和数据访问对象(Data Access Object,DAO),它们都是以Microsoft Jet数据库引擎为基础来实现的;(2)利用Remote Data控件、依附控件和远程数据对象;(3)利用开放式数据库互连API函数;(4)利用VBSQL API函数。这些方法各有优缺点,本文对它们进行了简要的介绍,希望开发出更好的客户/服务器应用程序。

2 Microsoft Jet数据库引擎

  DAO使用Jet数据库引擎通过ODBC驱动程序管理器和一个特定的服务器驱动程序与远程数据库服务器通信(如图1所示)。这个方法把开发者与某些编程复杂性隔离开来,同时提供高级数据访问对象、属性和方法。
  使用DAO或Data控件及其相关联的依附控件时,Jet引擎被自动激活。Jet引擎也通过DAO编程控件和受Data控件的操作的控制。同时使用Data控件和依附控件可以极大地减少开发时间。
  DAO编程模型提供以下特点:可以访问任何ODBC数据库;可以检索和连接ODBC或索引顺序访问文件;提供不直接使用ODBC API函数的面向对象的编程模型;绕过了Jet查询处理器机制;提供了高级的结果集管理;可以访问SQL Server的大多数功能;具有通用的错误管理。

图1 使用DAO和Jet引擎的远程数据访问

3 远程数据对象

  远程数据对象(RDO)包含在VB4.0/VB5.0企业版中,由一个动态连接库MSRDO32.DLL实现。当VB版本还只是2.0时,从VB访问MS SQL Server的手段只有API函数集。VB发展到3.0时,其DAO/Jet(Microsoft Access的数据库引擎)功能非凡,具备面向对象的程序接口,但处理速度尚不尽人意。当MS SQL Server发展到6.0、VB发展到4.0时,开发了新的对象模块,由此产生了RDO,可以访问MS SQL Server和Oracle远程数据库;RDO2.0是由VB5.0提供的。
  DAO/Jet是为了实现从VB访问Access数据库而开发的程序接口。RDO是从DAO派生出来的,但两者很大的不同在于其数据模式。DAO是ISAM模式,针对记录和字段;而RDO是关系模式,针对行和列。此外DAO是访问Access的Jet引擎的接口,而RDO则是访问ODBC的接口。
  RDO综合DAO/Jet、VBSQL/Dblib以及ODBC的优点,它短小、快速、强健,是基于ODBC API的一个对象模型。它依赖ODBC API和选定的ODBC驱动程序以及后端数据库引擎实现大部分的功能。
  通过使用RDO,可以进行查询、建立结果集和进行与数据库无关的面向对象的编程。综合应用RDO和Remote Data控制,可以访问ODBC数据源,而不用本地查询处理器。这样,在访问远程数据库引擎时,会产生很高的性能和灵活性。图2表示具有RDO代码和Remote Data控制的Visual Basic应用程序如何通过RDO与远程数据库服务器通信,它直接与ODBC驱动程序管理器和一个特定的驱动器相接口。

图2 使用RDO的远程数据访问

  RDO对象模型如图3所示,除了rdoEngine对象外,每个对象都在一个关联的集合中。RDO只在32位操作系统(Windows95或Windows NT)上得到支持。

图3 RDO2.0对象模块结构

  RDO包括若干对象、属性、方法,它们经过特别设计以实现同存储过程及其输入和输出参数、返回状态值的协同工作。RDO也可处理由单一查询生成的任何数目的结果集。
  RDO支持开放式批更新,允许创建结果集而且不限制更新数目,使用BatchUpdate方法完成所有的变更。如果需要对多个远程服务器执行相同的查询时,可以使用RDO将rdoQuery对象从其现有的连接中分离出来,再将其与另一个连接关联。使用这种方法,就可以对一个特定的服务器执行相同的查询。rdoQuery对象与rdoConnection对象都可以创建为独立的对象。这不仅简化了编程,而且允许更容易的、动态的rdoQuery-rdoConnection关联。
  RDO编程模型提供以下特点:可以访问任何ODBC数据库;提供不要求使用API的面向对象的编程模型;实现了键集、静态、动态和唯前向光标;支持异步查询;提供高级的结果集管理,包括限制返回的行的数目、管理多个结果集和从存储过程返回值的能力;对Micorsoft SQL Server和Oracle远程数据库引擎的优化功能,并能访问几乎所有的Micorsoft SQL Server和Oracle远程数据库引擎的功能;提供通用的错误管理。

4 开放式数据库互连(ODBC)API

  ODBC API是开放式数据库连接库及驱动程序的调用级接口,这些库对Microsoft SQL Server及任何具有ODBC驱动程序的数据库提供数据访问连接。通过对这个接口进行编程,可能建立与数据库无关的代码,这意味着ODBC API提供一个自动适应多种数据库的通用编程模型。随着数据访问引擎的发展,越来越多的数据引擎采用ODBC API作为它们的固有的数据库接口。ODBC API提供对消息的完全控制,并允许处理后端服务器的大多数特性。ODBC API不支持数据感知的依附控件,却支持利用客户方或服务器方的光标。根据驱动程序的相容级别和远程服务器的功能的不同,光标和其他操作的建立和管理的责任要么由客户的ODBC驱动程序接受,要么由服务器引擎自己负责。
  ODBC API编程模型提供以下特点:提供一个可以访问许多数据库体系结构的编程模型;对Microsoft SQL Server的固有接口;比VBSQL多一些API调用;存储过程参数的智能处理;支持Microsoft SQL Server 6.0上服务器方光标;实现了键集、动态、静态和唯前向光标;高级的结果集管理;对几乎所有的SQL Server功能的访问;完整的调用后的错误处理。
  图4表示Visual Basic如何执行ODBC API代码,它直接操作ODBC驱动程序管理器库入口点。这些入口点连接到一个允许访问特定类型的远程数据库和实现低级数据访问操作的驱动程序上。通常不必重写应用程序来访问不同类型的数据库,所要做的是改变远程数据库驱动程序。

图4 使用ODBC API的远程数据访问

  ODBC API是Jet数据库引擎用于访问外部非ISAM数据库的接口。尽管ISAM有自己的ODBC驱动程序存在,但Jet使用它自己的有关这些数据库的可安装ISAM驱动程序。

5 VBSQL API

  Visual Basic Library for SQL Server(VBSQL)是专门为Visual Basic操纵Microsoft SQL Server而开发的函数库,它几乎包含所有的DB-Library API,并作为Microsoft SQL Server的固有接口支持。如果正要建立一个新的客户机/服务器应用,并计划使用API模型,建议使用ODBC API,而不是使用VBSQL或DB-Library。当应用只需要访问Microsoft SQL Server系统时,可以考虑使用VBSQL。
  VBSQL和ODBC API两者都提供最大的灵活性,且在访问SQL Server时提供更好的性能支持。VBSQL不支持依附控件,因此应用必须生成代码和维护基于表单的控制。
  VBSQL API编程模型支持以下特点:能够利用几乎所有SQL Server功能;只访问Microsoft SQL Server;是对Microsoft SQL Server的一个固有接口;支持在SQL Server 6.0上服务器方光标;实现了键集、动态、静态、唯前向滚动光标;提供行缓冲区;具有完整的中断驱动的错误和消息处理程序。
  图5表明使用VBSQL的应用如何进行对DB-Library接口的直接调用。DB-Library通过一个可替换的网络驱动程序把专有数据传递给SQL Server。为了让DB-Library返回错误和消息,应用必须包括一个VBSQL定制控制来产生回调事件。

图5 使用VBSQL API的远程数据访问

6 结束语

  文中介绍了四种远程数据访问方法,它们各具特色,在实际中应综合使用,可以取长补短、达到最佳效果。
  另外,Microsoft公司已经明确宣布今后不会对VBSQL/DBLib进行升级,而ODBC API函数一级的编程方式也不为人所喜爱。RDO今后也将被以ActiveX技术为基础的ADO(ActiveX Data Objects)所代替。RDO以ODBC为基础,而ADO则是基于全新的OLE DB技术。ODBC本身是以SQL Server、Oracle等关系数据库为访问对象;OLE DB则不仅限于此,而将是可以对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取的技术。DAO和RDO目前应用非常比较广泛,但随着技术的进步,它们的作用也将逐步淡化。但是利用好DAO和RDO是将来用好ADO的不可缺少的基础。

阚志刚 博士生。主要研究方向:数据库技术、多媒体技术等。 马瑞民 副教授。主要研究方向:多媒体技术、数据库技术等。

作者单位:大庆石油学院计算机科学系 黑龙江.安达(151400)

参考文献

[1] Robert Signore,John Creamer,Michael O.Stegman, 侯雪萍,等译. 开放式数据库互连ODBC方案集粹.北京:电子工业出版社, 1995
[2] Kyle Geiger.曹 康,等译.ODBC深入剖析.北京:电子工业出版社, 1996
[3] Mike McKelvy&Ronald Martinsen.杨继平,等译.Visual Basic 5开发使用手册.北京:机械工业出版社, 1997
[4] 路 勇,姚英学,等.利用VB实现实时数据采集.计算机应用,1998,18(2)