论文部分内容阅读
[摘要]Visual Basic是一门开发Windows应用程序很好的一种语言,使用它能够开发出大型的应用系统。它具有访问各种数据库的功能。用Visual Basic访问数据库有许多可供选择的方案,但是选择那种方案更能使开发队伍和应用软件在当前处于有利位置并且适应将来的发展方向呢?这些解决方案各有什么特点?介绍几种Visual Basic访问数据库的方法,对这些数据接口的性能进行了比较,并提出相互的转化关系。
[关键词]Visual Basic 数据库 数据访问接口 DAO ADO RDO
中图分类号:TP3 文献标识码:A文章编号:1671-7597 (2008) 0210027-02
一、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数据源访问的优化。
二、VB访问数据库的现状
目前,VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。下面分别列出每一类及每一类包含的方法。
三、几种接口的分析比较
VBSQL:是Visual Basic结构化查询语言。是一种基于API的接口方法,是VB和SQL Server 之间的一个老接口。它是在基于C语言的DB -Library上建立的,那是我们在SQL Server上使用Sybase的年代。它能与SQL Server的后续版本兼容,但并不支持新的功能。VBSQL只支持微软的SQL Server。VBSQL快而且轻但不支持对象界面。
0DBC(Open Database Connectivity,开放数据库互连):是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
ODBC API:是一套复杂的函数集,可提供一些通用的接口,以便访问各种后台数据库。对现今的客户机/服务器应用程序来说,每个数据库系统都有各自的接口,例如SQL Server,Oracle,DB2和Infomix等各种数据库系统提供的接口就完全不一样。对程序员来说,这是一件非常头疼的事。ODBC的出现成为一件大喜事,在添加了一个附加层之后,用户只需要学习和掌握一套函数集,随后就可以直接使用任何数据库系统的大多数特性。但是,不要认为ODBC提供了一个统一的接口,同时也提供了简便的操作。事实上,ODBC API的使用是非常复杂的。如果不正确地使用ODBC API,可能会导致不可预知的错误。例如,假如使用ODBC API代码来关闭连接或释放这些ODBC句柄中的任何一个,那么RemoteData控件或RDO的行为将是不可预知的。保存ODBC句柄以供备用也是没有意义的,因为它们是可变的。
DAO(Data Access Objects):数据访问对象。是一种应用程序编程接口(API),存在于Visual Basic中,它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的数据库接口。DAO对象封闭了Access的Jet函数。通过Jet函数,它还可以访问其他的结构化查询语言(SQL)数据库。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL(数据描述语言)的功能很类似。DAO可通过ODBC像直接连接到其它数据库一样,直接连接到Access数据库。DAO最适用于单系统应用程序或小范围本地分布使用。DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。它对于单一系统的数据库应用程序非常有效。
JET(Joint Engine Technology):数据连接性引擎技术。是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。
RDO(Remote Data Objects):远程数据对象。是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。RDO是ODBC API的一个浅层界面接口。是专为访问远程ODBC关系数据源而设计的。
ADO(Active Data Objects):Active数据对象。是DAO和RDO方式的继承者,ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。其编程模型是Microsoft的一种新技术。该技术是为Microsoft最新和最强大的数据访问范例OLE DB而设计的,是一个简单的应用程序层接口。OLE DB是新的底层接口,它并不局限于ISAM、Jet甚至关系数据源,但是它能够处理任何类型的数据,而不考虑它们的格式和存储方法,是一种通用的数据访问范例。由于OLE DB接口比较复杂,不能在VB中直接访问。VB通过ADO封装并且实现了OLE DB的所有功能,从而可以通过ADO来调用OLE DB数据源。作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。
ADC(Advanced Data Connector):高级数据连接器。提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLE DB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。
RDC(RemoteData Control):远程数据访问控件。是一种对RDO数据绑定的控件。可以输出特定的结果集到数据源控件。
ODBC Direct:是一种基于DAO对象的新的DAO模式,其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。
OLE DB:是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序或用于C++的开发者开发定制的数据库组件。OLE DB不能被VB直接调用。
四、VB访问数据库的原则
具体问题具体分析,根据具体的环境、条件、要求而采用适当的方案。
(一)代码的重用和运行的效率
例如:通过使用ODBC数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。用VBSQL通过DB-Library就做不到。而ODBC接口并不是VB访问数据库运行效率最高的方法。同样,同是使用ODBC接口的ADO的效率要高于RDO。
(二)实现的简便性,易维护性
如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。例如:本地需要访问ISAM或Jet类型数据源,那么就使用DAO/Jet,而没有必要使用通过ODBC的方法。RDC实现起来要较RDO更容易。
(三)安全性原则
这一条应根据环境和条件决定。例如局域网的网络安全性要好于广域网因而可直接利用数据控件如DC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用RDC就不如用RDO易控制错误。
五、结语
数据库接口中最新的是ADO,它是比RDO和DAO更加简单、更加灵活的对象模型。对于新工程,应该使用ADO作为数据访问接口。ADO向我们提供了一个熟悉的,高层的对OLE DB的Automation封装接口。ADO向VB程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存占用(已实现ADO2.0的Msado15.dll需要占用342K内存,比RDO的Msrdo20.dll的368K略小,大约是DAO3.5的Dao350.dll所占内存的60%)。同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建。因此你可以只创建一个"Connection"对象,但是可以有多个,独立的"Recordset"对象来使用它。同时ADO针对客户/服务器以及WEB应用程序作了优化。DAO最适用于单系统应用程序或小范围本地分布使用,而RDO已被证明是许多SQL Server、Oracle以及其它大型关系数据库开发者经常选用的最佳接口。
参考文献:
[1]徐安东,李飞,邢晓怡,Visual Basic数据库应用开发教程,清华大学出版社,2006.
[2]明日科技,Visual Basic开发技术大全,人民邮电出版社,2007.
[3]姚巍,Visual Basic数据库开发从入门到精通,人民邮电出版社,2006.
[4]王春才,高春艳,李俊民,Visual Basic数据库系统开发完全手册,人民邮电出版社,2006.
作者简介:
王 晶(1979-),女,山东烟台人,助教。主要研究方向:数据库;信息化;软件工程技术应用;温向彬(1975-),男,陕西渭南人,工程师。主要研究方向:自动控制,软件工程。
[关键词]Visual Basic 数据库 数据访问接口 DAO ADO RDO
中图分类号:TP3 文献标识码:A文章编号:1671-7597 (2008) 0210027-02
一、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数据源访问的优化。
二、VB访问数据库的现状
目前,VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。下面分别列出每一类及每一类包含的方法。
三、几种接口的分析比较
VBSQL:是Visual Basic结构化查询语言。是一种基于API的接口方法,是VB和SQL Server 之间的一个老接口。它是在基于C语言的DB -Library上建立的,那是我们在SQL Server上使用Sybase的年代。它能与SQL Server的后续版本兼容,但并不支持新的功能。VBSQL只支持微软的SQL Server。VBSQL快而且轻但不支持对象界面。
0DBC(Open Database Connectivity,开放数据库互连):是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
ODBC API:是一套复杂的函数集,可提供一些通用的接口,以便访问各种后台数据库。对现今的客户机/服务器应用程序来说,每个数据库系统都有各自的接口,例如SQL Server,Oracle,DB2和Infomix等各种数据库系统提供的接口就完全不一样。对程序员来说,这是一件非常头疼的事。ODBC的出现成为一件大喜事,在添加了一个附加层之后,用户只需要学习和掌握一套函数集,随后就可以直接使用任何数据库系统的大多数特性。但是,不要认为ODBC提供了一个统一的接口,同时也提供了简便的操作。事实上,ODBC API的使用是非常复杂的。如果不正确地使用ODBC API,可能会导致不可预知的错误。例如,假如使用ODBC API代码来关闭连接或释放这些ODBC句柄中的任何一个,那么RemoteData控件或RDO的行为将是不可预知的。保存ODBC句柄以供备用也是没有意义的,因为它们是可变的。
DAO(Data Access Objects):数据访问对象。是一种应用程序编程接口(API),存在于Visual Basic中,它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的数据库接口。DAO对象封闭了Access的Jet函数。通过Jet函数,它还可以访问其他的结构化查询语言(SQL)数据库。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL(数据描述语言)的功能很类似。DAO可通过ODBC像直接连接到其它数据库一样,直接连接到Access数据库。DAO最适用于单系统应用程序或小范围本地分布使用。DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。它对于单一系统的数据库应用程序非常有效。
JET(Joint Engine Technology):数据连接性引擎技术。是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。
RDO(Remote Data Objects):远程数据对象。是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。RDO是ODBC API的一个浅层界面接口。是专为访问远程ODBC关系数据源而设计的。
ADO(Active Data Objects):Active数据对象。是DAO和RDO方式的继承者,ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。其编程模型是Microsoft的一种新技术。该技术是为Microsoft最新和最强大的数据访问范例OLE DB而设计的,是一个简单的应用程序层接口。OLE DB是新的底层接口,它并不局限于ISAM、Jet甚至关系数据源,但是它能够处理任何类型的数据,而不考虑它们的格式和存储方法,是一种通用的数据访问范例。由于OLE DB接口比较复杂,不能在VB中直接访问。VB通过ADO封装并且实现了OLE DB的所有功能,从而可以通过ADO来调用OLE DB数据源。作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。
ADC(Advanced Data Connector):高级数据连接器。提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLE DB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。
RDC(RemoteData Control):远程数据访问控件。是一种对RDO数据绑定的控件。可以输出特定的结果集到数据源控件。
ODBC Direct:是一种基于DAO对象的新的DAO模式,其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。
OLE DB:是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序或用于C++的开发者开发定制的数据库组件。OLE DB不能被VB直接调用。
四、VB访问数据库的原则
具体问题具体分析,根据具体的环境、条件、要求而采用适当的方案。
(一)代码的重用和运行的效率
例如:通过使用ODBC数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。用VBSQL通过DB-Library就做不到。而ODBC接口并不是VB访问数据库运行效率最高的方法。同样,同是使用ODBC接口的ADO的效率要高于RDO。
(二)实现的简便性,易维护性
如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。例如:本地需要访问ISAM或Jet类型数据源,那么就使用DAO/Jet,而没有必要使用通过ODBC的方法。RDC实现起来要较RDO更容易。
(三)安全性原则
这一条应根据环境和条件决定。例如局域网的网络安全性要好于广域网因而可直接利用数据控件如DC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用RDC就不如用RDO易控制错误。
五、结语
数据库接口中最新的是ADO,它是比RDO和DAO更加简单、更加灵活的对象模型。对于新工程,应该使用ADO作为数据访问接口。ADO向我们提供了一个熟悉的,高层的对OLE DB的Automation封装接口。ADO向VB程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存占用(已实现ADO2.0的Msado15.dll需要占用342K内存,比RDO的Msrdo20.dll的368K略小,大约是DAO3.5的Dao350.dll所占内存的60%)。同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建。因此你可以只创建一个"Connection"对象,但是可以有多个,独立的"Recordset"对象来使用它。同时ADO针对客户/服务器以及WEB应用程序作了优化。DAO最适用于单系统应用程序或小范围本地分布使用,而RDO已被证明是许多SQL Server、Oracle以及其它大型关系数据库开发者经常选用的最佳接口。
参考文献:
[1]徐安东,李飞,邢晓怡,Visual Basic数据库应用开发教程,清华大学出版社,2006.
[2]明日科技,Visual Basic开发技术大全,人民邮电出版社,2007.
[3]姚巍,Visual Basic数据库开发从入门到精通,人民邮电出版社,2006.
[4]王春才,高春艳,李俊民,Visual Basic数据库系统开发完全手册,人民邮电出版社,2006.
作者简介:
王 晶(1979-),女,山东烟台人,助教。主要研究方向:数据库;信息化;软件工程技术应用;温向彬(1975-),男,陕西渭南人,工程师。主要研究方向:自动控制,软件工程。