摘要:本文介绍了几种VisualBasic访问数据库的方法,对这些数据接口的性能进行了比较,并提出相互的转化关系。
关键词:VisualBasic数据访问接口DAORDOADO
1VB访问数据库的方法
VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。下面以列表的方式列出每一类,及每一类包含的方法。
1.1接口对象法(API)
VBSQL:通过DB-Library访问微软的SQLServer
ODBCAPI:任何一种ODBC数据源16位和32位
DAO/Jet:本地的Jet/Access.MDB、顺序索引数据库(ISAM)和任何ODBC数据源
DAO/ODBCDirect:任何一种ODBC数据源(经过RDO)
RDO2.0:任何一种ODBC数据源(LevelⅠ或Ⅱ)
ADO:任何一种ODBC数据源和任何经过OLEDB界面接口的数据源
1.2数据控件法
DataControl:DAO/Jet数据界面接口
DataControl/ODBCDirect:DAO/ODBCDirect数据界面接口
RemoteDataControl/RDC:RDO数据界面接口
AdvancedDataConnector/ADC:ADO数据界面接口
2几种接口的比较
ADC(AdvancedDataConnector):高级数据连接器。提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLEDB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。
ADO(ActiveDataObjects):Active数据对象。是DAO/RDO的后继产物,ADO“扩展”了DAO和RDO所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件,是一个便于使用的应用程序层接口。ADO是为Microsoft最新和最强大的数据访问范例OLEDB而设计的,OLEDB为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。ADO在关键的Internet方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。
DAO(DataAccessObjects):数据访问对象。是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM数据库,使用DAO/ODBCDirect功能可以实现远程RDO功能。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL(数据描述语言)的功能很类似。DAO可通过ODBC像直接连接到其它数据库一样,直接连接到Access数据库。DAO最适用于单系统应用程序或小范围本地分布使用。DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。
JET(JointEngineTechnology):数据连接性引擎技术。是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。
0DBC(OpenDatabaseConnectivity):开放式的数据库连接技术。为异种数据库的访问提供了统一的接口。ODBC基于SQL(StructuredQueryLanguage),并把它作为访问数据库的标准。这个接口提供了最大限度的相互可操作性:一个应用程序可以通过一组通用的代码访问不同的数据库管理系统。一个软件开发者开发的客户/服务器应用程序不会被束定于某个特定的数据库之上。ODBC可以为不同的数据库提供相应的驱动程序,是一种公认的关系数据源的接口界面。它快而轻并且提供统一接口的界面,ODBC对任何数据源都未作优化。
ODBCAPI:数据库厂商为程序设计者提供的直接访问数据库的一组函数。注意:这里要指出的是,虽然ODBCAPI提供了很多很方便而且强大的功能。但是通常来说ODBCAPI都比较难学,而且使用很容易出错。虽然允许用ODBCAPI来操作ODBC句柄,但还是要小心,如果不正确地使用ODBCAPI,可能会导致不可预知的错误。例如,假如使用ODBCAPI代码来关闭连接或释放这些ODBC句柄中的任何一个,那么RemoteData控件或RDO的行为将是不可预知的。保存ODBC句柄以供备用也是没有意义的,因为它们是可变的。
ODBCDirect:是一种基于DAO对象的新的DAO模式,其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。
OLEDB:是COM模型的数据库接口。是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序或用于C 的开发者开发定制的数据库组件。它能够处理任何类型的数据。OLEDB向应用程序提供一个统一的数据访问方法,而不考虑它们的格式和存储方法。在实际应用中,这种多样性意味着可以访问驻留在电子数据表、文本文件甚至邮件服务器,诸如MicrosoftExchang中的数据。OLEDB不能被VB直接调用。
RDC(RemoteDataControl):远程数据访问控件。是一种对RDO数据绑定的控件。可以输出特定的结果集到数据源控件。
RDO(RemoteDataObjects):远程数据对象。是一个到ODBC的、面向对象的数据访问接口,远程数据对象和集合为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法。可以在对象和集合之间建立起关系,这些关系就代表了数据库系统的逻辑结构。它同易于使用的DAOstyle组合在一起,提供了1个接口,形式上展示出所有ODBC的底层功能和灵活性。RDO是ODBCAPI的一个浅层界面接口。是专为访问远程ODBC关系数据源而设计的。尽管RDO在访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQLServer、Oracle以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性以及方法。
VBSQL:是VisualBasic结构化查询语言。是一种基于API的接口方法,几乎与C的DB-LibraryAPI相同。VBSQL只支持微软的SQLServer。VBSQL快而且轻但不支持对象界面。
vb访问数据库的方法及接口的比较来自:免费论文网
3 性能比较及应用说明
用VB开发基于SQLServer的数据库系统,以上几种访问SQLServer的方法各有各的特点。DAOs方法是基于对象的,因而便于使用,但是它从VisualBasic到SQLServer的最慢的方式。ODBCAPI和VBSQL方法从本质上讲是基于程序的。ODBCAPI方法通用性好,允许最强的互操作性,编程简单,但速度慢于VBSQL方法。VBSQL方法通过VBSQL控件,提供了重要的SQLServer前端应用程序所需的灵活性、强大功能和良好性能。它具有真正的事件驱动及错误处理能力,完全支持异步处理、游标和计算列等。这些都是VBSQL方法超出其它方法的优势,但其编程稍复杂。RDO是位于ODBCAPI之上的一个对象模型层,它依赖ODBCAPI、ODBC驱动程序以及后端数据库引擎来实现,用RDO所需的程序短小(约250KB)、快速。RDO具备基本的ODBC处理方法,可直接执行大多数ODBCAPI函数,RDO包含在VB4.0/VB5.0企业版中,由MSRDO32.DLL动态连接库来实现。RDO是综合了DAO/Jet、VBSQL/DBLib和ODBC的优点的对象模型,包含ODBCAPI应用层,设计为在后台(服务器端)有数据库存在的前提下运行,是针对SQLServer和Oracle而特别设计的。RDO的优势在于它完全被集成在VB之中,可直接访问SQLServer存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、VisualDatabaseTools的集成化等。但微软已宣布今后不再对VBSQL/DBLib进行升级,而ODBCAPI函数一般的编程方式也不为人们所喜爱,RDO的应用将逐渐减少。至于实际使用哪一种接口方式,在很大程度上依赖于用户的应用程序的具体情况而定。
4VB访问数据库的原则
应用VB访问数据库时,要具体问题具体分析,根据具体的环境、条件、要求而采用适当的方案,就应注意以下几个原则:
4.1代码的重用和运行的效率
例如:通过使用ODBC数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。用VBSQL通过DB-Library就做不到。而ODBC接口并不是VB访问数据库运行效率最高的方法。同样,同是使用ODBC接口的ADO的效率要高于RDO。
4.2实现的简便性,易维护性
如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。例如:本地需要访问ISAM或Jet类型数据源,那么就使用DAO/Jet,而没有必要使用通过ODBC的方法。RDC实现起来要较RDO更容易。
4.3安全性原则
这一条应根据环境和条件决定。例如局域网的网络安全性要好于广域网因而可直接利用数据控件如RDC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用RDC就不如用RDO易控制错误。
5结束语
在数据访问接口中DAO最适用于单系统应用程序或小范围本地分布使用,而RDO已被证明是许多SQLServer、Oracle以及其它大型关系数据库开发者经常选用的最佳接口。ADO是DAO/RDO的后继产物。ADO2.0在功能上与RDO更相似,而且一般来说,在这2种模型之间有一种相似的映射关系。ADO“扩展”了DAO和RDO所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法和参数,以及事件。
数据库接口中最新的是ADO,它是比RDO和DAO更加简单、更加灵活的对象模型。对于新工程,应该使用ADO作为数据访问接口。
不过,ADO并不是自动和现存的数据访问应用程序代码兼容的。当ADO封装DAO和RDO的功能性的时候,必须将许多语言要素转换为ADO语法。在某些情况下,这将意味着现存代码的某些功能的1个简单转换。在其它情况下,最佳的做法可能是用ADO的新功能重写该应用程序。同时要注意的是,ADO当前并不支持DAO的所有功能。ADO主要包括RDO风格的功能性,以便和OLEDB数据源交互,另外还包括远程和DHTML技术。
一般说来,在ADO的演化过程中,马上把大多数DAO应用程序移植到ADO上可能为时太早,因为当前的ADO并不支持数据定义(DDL)、用户、组等。不过,如果只将DAO用于客户/服务器应用程序,而并不依赖于Jet数据库引擎或不使用DDL,那么现在就可以移植到ADO。
参考文献
[1]宋琦凡,付敬平,使用VisualBasic开发数据库应用软件,北京:电子工业出版社,1996
[2]EvangelosPetroutsos,VisualBasic5从入门到精通,北京:电子工业出版社,1997
[3]孟小峰,开放数据库互连—ODBC2.0使用大全,北京:清华大学出版社,1995
[4]廖卫东,赵军.VisualBasic编程手册,北京:机械工业出版社,1996