数据库访问技术的研究
2011-10-26河南省对外科技交流中心张成鹏李怡君
河南省对外科技交流中心 张成鹏 李怡君
郑州市第六人民医院 李 冬
数据库访问技术的研究
河南省对外科技交流中心 张成鹏 李怡君
郑州市第六人民医院 李 冬
一、研究背景
随着计算机的产生和计算技术的不断发展,以及科技的进步特别是信息产业的发展,把我们带入一个全新的信息时代。为此,人们需要收集、加工和处理大量的信息和数据,数据库技术是随着数据和信息管理而产生的。在所有的数据库系统中,关系型数据库是目前应用最为广泛的数据库之一。
由于不同数据库应用程序开发工具有不同的访问方式,而且不同的数据供应商又提供了不同的接口,致使用户在使用开发工具进行数据库应用程序开发时,对不同的访问方式产生了迷惑和不解,不知道哪一种访问方式的效率和效果最好。本文,笔者探讨了常用数据库应用程序开发工具对不同数据库的访问方式。其中,数据库应用程序开发工具以VB、ASP为例,数据库以Access、SQLServer和Oracle为例。
VB和ASP都是微软提供的系统开发工具。VB是微软VisualStudio集成开发工具中的一个开发工具,它既可以开发单机结构数据库应用程序,又可以开发C/S结构的应用系统。VB使用DAO、RDO、ADO数据库访问方式。ASP也是微软提供的一个开发工具,主要用于开发B/S结构的应用程序,ASP使用ADO数据库访问方式。下面,笔者分别介绍一下以上3种方式对Access、SQLServer和Oracle的访问技术。
二、数据库访问对象DAO
数据库访问对象(DataAccessObject,简称DAO),它是一组以数据库引擎(TheJetDataBaseEngine)为核心而建立起来的动态连接库(DLLS)。DAO支持2种不同类型的数据库环境:利用MicrosoftJetDataBaseEngine,使得DAO成为访问本地ISAM数据库的最佳手段;利用ODBCDirect,使得DAO在访问ODBC类型数据库时拥有最小的额外开销。
1.DAO可存取的数据库。DAO可以存取本地DAO数据库,即MicrosoftAccess和ODBC数据库,包括SQLServer、Oracle、Sybase和任何提供ODBC驱动的客户机/服务器数据库,以及FoxPro、Lotus、文本文件等内容。
以上每个数据库源都提供了不同的安全等级。DAO的主要目的就是将程序员从每个数据库的细节中解脱出来而向他们提供统一的API接口。
2.DAO的基本对象。DAO中有3个最基本的对象:DBEngine、Workspce和DataBase。
(1)DBEngine。DBEngine对象用于数据库引擎指定系数参数,DBEngine中的DefaultType属性用于描述缺省的Workspace类型。如果其属性设置为dbUseODBC,则使用ODBCDitect模式。Workspace对象作为一个打开的数据库的容器。
(2)Workspace。Workspace为打开的数据库提供安全的设备环境。在创建DBEngine的同时,程序自动创建了一个缺省的Workspace对象,用来指定访问数据库的用户名和口令。
(3)Database。Database对象封装了数据库存储器,并且还定义了数据库的表格、关系、存储查询及打开记录等。
三、远程数据对象RDO
远程数据对象(RemoteDataObject,简称RDO)是位于ODBCAPI之上的一个对象模型层,它依赖ODBCAPI、选定的ODBC驱动程序以及后端数据库引擎来实现大部分的功能。RDO具备基本的ODBC处理方法,所以可以直接执行大多数ODBCAPI函数。RDO已包含在VB4.0/5.0企业版中,由一个动态连接库MSRDO32.DLL来实现。
1.RDO数据库接口。RDO面向客户机/服务器程序的特殊需求提供了一组对象以辅助这种程序的开发。与DAO提供的Jet数据库引擎接口不同,RDO提供的是一个直接与ODBCAPI连接的面向对象的抽象层。RDO使用ODBCAPI和数据库服务器驱动器创建到数据库服务器的链接,创建查询和用于浏览结果设计集的游标,并且依赖数据库服务器执行复杂的请求过程。它不像DAO那样,利用Jet数据库引擎进行查询的预处理和连接管理,而是直接与数据库服务器交互,这使得RDO特别适用于客户机/服务器型应用程序的开发。
2.RDO的基本对象。要想正确地使用RDO,必须要对其对象模块结构加以理解。在RDO的对象和集合中,有很多对数据库的状态和设定进行操作的属性,以及对数据库进行操作的方法。RDO主要包括rdoEngine对象、rdoEnvironment对象和rdoConnection对象。
(1)rdoEngine对象。最初调用RDO对象以及RDC(远程数据控件)时,系统会自动生成rdoEngine对象的附带事件。rdoEngine用于对RDO全局属性的参数和选项进行设置,是RDO的阶层结构内最上层的对象,包含了其他所有的对象。
(2)rdoEnvironment对象。DAO对象在自动创建rdoEngine对象时,生成rdoEnviroment对象的初始值并保存为rdoEnviroments(0)。在一般情况下,应用程序中不必追加rdoEnvironment对象,大多数只需对已有的rdoEnviroments(0)进行操作就可以了。只有在支持1个以上事务(Transaction)时,需要将用户名和口令信息分别处理,利用rdoCreateEnvironment方法将特定的用户名和口令值做成新的rdoEnvironment对象。
(3)rdoConnection对象。rdoConnection对象用于同SQL Server的连接管理,下面是与SQLServer连接的例子。
首先用New关键字声明一个rdoConnection对象,由此生成独立的连接对象,这时它还不是rdoConnection集合的成员。然后在具体连接到SQLServer数据库之前,设定rdoConnection集合的属性。
四、ActiveX数据对象ADO
ActiveX数据对象(ActiveXDataObject,简称ADO)。API是另一种用于开发访问OLEDB数据源应用程序的API。有很多种程序设计语言都支持ADO,包括VisualBasic、VisualC++、VBScript、VisualJ++和ActiveServerPage等。
1.OLEDB数据库接口。OLEDB是COM模型的数据库接口。它是一系列的接口集合,介绍了一种通用的数据访问方法。也就是说,OLEDB并不局限于ISAM、JET甚至关系数据源,而是能够用于处理任何类型的数据。OLEDB向应用程序提供1个统一的数据访问方法,而不考虑它们的格式和存储方法。ADO集合了DAO和RDO的优点,而且它不像DAO和RDO那样严格遵循对象的层次关系。这就意味着ADO对象更容易创建和操纵,因为它们都可以直接地创建和管理。ADO更适用于开发C/S和B/S结构的应用程序。图1说明了一个典型ADO应用程序的配置。
2.ADO的基本对象。
(1)Connection对象。一个Connection对象代表1个到指定数据源的成功连接,应用程序通过链接访问数据源,也可以直接访问数据源,或者通过类似MicrosoftInternetInformationServer的中间层间接访问数据源。链接成功后,Connection以对象的形式存在。
(2)Command对象。Command对象是对数据源执行的一系列操作的定义。使用Command对象来查询数据库并返回数据集对象形式的查询结果。Command对象指定变量和参数来完成对数据的操作,如添加记录、删除记录和更新纪录等。
(3)Recordset对象。如果命令行指定数据以表的形式组织,执行命令后将返回相应的数据集。通过数据集可以对记录以及组成记录的列进行各种操作,如添加、修改和删除等操作。