2.2数据控件法
DataControl:
DAO/Jet数据界面接口
DataControl/ODBCDirect:
DAO/ODBCDirect数据界面接口
RemoteDataControl/RDC:
RDO数据界面接口
AdvancedDataConnector/ADC:
ADO数据界面接口
2.3几种接口的比较
ADC(AdvancedDataConnector):
[4]高级数据连接器。
提供绑定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机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。
ODBC(OpenDatabaseConnectivity):
开放式的数据库连接技术。
为异种数据库的访问提供了统一的接口。
ODBC基于SQL(StructuredQueryLanguage),并把它作为访问数据库的标准。
这个接口提供了最大限度的相互可操作性:
一个应用程序可以通过一组通用的代码访问不同的数据库管理系统。
一个软件开发者开发的客户/服务器应用程序不会被束定于某个特定的数据库之上。
ODBC可以为不同的数据库提供相应的驱动程序,是一种公认的关系数据源的接口界面。
它快而轻并且提供统一接口的界面,ODBC对任何数据源都未作优化。
ODBCAPI:
数据库厂商为程序设计者提供的直接访问数据库的一组函数。
注意:
这里要指出的是,虽然ODBCAPI提供了很多很方便而且强大的功能。
但是通常来说ODBCAPI都比较难学,而且使用很容易出错。
虽然允许用ODBCAPI来操作[6]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提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性以及方法。
2.4 性能比较及应用说明
以上几种访问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[7]进行升级,而ODBCAPI函数一般的编程方式也不为人们所喜爱,RDO的应用将逐渐减少。
至于实际使用哪一种接口方式,在很大程度上依赖于用户的应用程序的具体情况而定。
2.5JSP访问数据库的原则
应用JSP访问数据库时,要具体问题具体分析,根据具体的环境、条件、要求而采用适当的方案,就应注意以下几个原则:
2.5.1代码的重用和运行的效率(正文3级标题,用小四号黑体,不加粗)
例如:
通过使用ODBC数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。
使用ODBC接口的ADO的效率要高于RDO。
2.5.2实现的简便性,易维护性
如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。
例如:
本地需要访问ISAM或Jet类型数据源,那么就使用DAO/Jet,而没有必要使用通过ODBC的方法。
RDC实现起来要较RDO更容易。
2.5.3安全性原则
这一条应根据环境和条件决定。
例如局域网的网络安全性要好于广域网因而可直接利用数据控件如RDC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用RDC就不如用RDO易控制错误。
3数据库访问分析(正文1级标题,四号黑体,不加粗,段前后均留0.5行距)
3.1使用数据库对象(正文2级标题,用小四号黑体,不加粗)
首先,要进行有关数据对象的声明,代码如下。
DimMyWsAsWorkspace
DimMyDBAsDatabase
DimWordTabAsRecordset
生成工作区,打开数据库,然后再根据需要打开相应的库表。
SetMyWs=DBEngine.CreateWorkspace″″″Admin″″″dbUseJet
SetMyDB=MyWs.OpenDatabase数据库名称FalseFalse
SetWordTab=MyDB.OpenRecordset″表名″dbOpenDynaset
这种方法的优点是代码比较简单,要求的环境为DAO2.5/3.51,其中表名可以换成SELECT语句,即根据条件打开所需要的记录集,这种方法可脱离数据控件,可以比较方便灵活地操作数据库表,增加了程序的灵活性。
3.2使用ADODB
首先,声明一个链接变量,并根据需要声明记录集变量。
DimLocCnn1AsADODB.Connection
DimLocRst1AsADODB.Recordset
建立与数据库的链接,如果数据库没有口令,最后一行可以不写(写上也不会错)。
SetLocCnn1=NewADODB.Connection
LocCnn1.Open″Provider=Microsoft.Jet.OLEDB.4.0UserID=Admin″&_
″DataSource=″&App.Path&″\数据库名称.mdb″&_
″Mode=ShareDenyNoneExtendedProperties=''PersistSecurityInfo=False″&_
″JetOLEDBDatabasePassword='asp561rbc'″
这种方法虽然代码长一些,但对数据环境要求低,且结构清晰,所编写的发布程序也大为减小。
由于与链接SQLServer等数据库的方法一样,因而大量的操作数据库的代码相同,当数据库需要由Access扩充到一些大型数据库,或[8]由一些大型数据库裁剪出一个简单数据库时,程序的移植会比较方便。
另外,这种方法对于Access97及Access2000均能很好地支持,兼容性好。
对于大量插入、删除、修改等操作,只在Connection层进行即可,既可提高速度又可减少代码。
如果还要获取具体的记录集内容,则须再根据条件打开具体的库表,代码如下:
SetLocRst1=NewADODB.Recordset
LocRst1.CursorType=adOpenKeyset
LocRst1.LockType=adLockOptimistic
LocRst1.Open″SELECTFROM表名″LocCnn1adCmdText
3.3DAO、RDO、ODB、CADO和JDBC
下面介绍一个实例,来消化以上的相关知识。
这里我在一个程序界面下实现了DAO,ADO,ODBC,OLEDB四种数据库访问方式。
程序代码分析:
'整个程序功能是选择不同的连接方式来进行显示工作,三种方式显示效果完全相同
'下面是主程序过程
PrivateSubCommand1_Click()
DimselitemAsInteger
'判断连接数据库的方式
IfOption1.Value=TrueThen
selitem=1
Else
IfOption2.Value=TrueThen
selitem=2
Else
selitem=3
EndIf
EndIf
'选取不同的数据库连接方式
SelectCaseselitem
Case1:
'使用DAO的数据库连接方式
CallShowByDAO
Case2:
'使
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1