仇伟明
(无锡商业职业技术学院, 江苏 无锡 214153)
基于Visual Basic环境下数据库访问技术的研究
仇伟明
(无锡商业职业技术学院, 江苏 无锡 214153)
对VB提供的3种不同数据库访问技术,即数据访问对象(Data Access Object, DAO)、远程数据对象(Remote Data Object, RDO)、Active X数据对象(ActiveX Data Object, ADO)做了对比研究,并就各VB数据库访问技术的原理和特点做了简要阐述。
VB; 数据库; 访问技术
VB是由Microsoft公司推出的包含开发及编译平台的基于对象触发事件驱动的语言,它具有灵活易学的特点,并且对数据库具有很强的管理功能。
在VB环境下,可以使用DAO,RDO,ADO这3种技术来访问数据库中的数据。根据在访问数据时是否需要编写代码,3种数据库访问技术又都具有以下两种具体的访问形式:使用Data控件的非编程访问方式,即通过对控件的数据绑定来访问数据库;使用对象模型的编程访问方式,即通过定义对象和编写代码来访问数据库。
DAO基于使用一种接口来访问多种类型的数据这一设计思想而设计的。它将Microsoft连接性引擎技术(Joint Engine Technology, JET)数据库引擎外显,并允许VB开发者通过开放式数据连接(Open Database Connectivity, ODBC)直接连接到数据库并访问其中的数据表。
在VB中提供了与DAO相关的两种具体的数据库访问形式:Data控件和DAO对象模型。
Data控件给出较少的访问现存数据库的功能,这些功能不需要通过编程来实现,VB可把DAO封装成Data控件,Data控件将数据的值作为属性,数据的查询作为方法,数据值的变化作为事件,通过设置相应的DatabaseName属性和RecordSource属性就可以将Data控件与数据库中的记录源连接起来[1],通过Data控件来对数据库进行操作,其操作对象是数据表中的记录和字段。
DAO对象模型则是通过编程来完整的定义操作对象从而访问数据库的。DAO提供了两种不同的对象模型:一种是通过Jet数据库引擎来访问数据;另一种是通过ODBC Direct来访问数据[2],这两种对象模型都是层次结构的。使用Jet的DAO对象模型和使用ODBC Direct的DAO对象模型分别如图1和图2所示。
图1 使用Jet的DAO对象模型
图2 使用ODBC Direct的DAO对象模型
使用Jet的DAO对象模型中重要对象说明:DBEngine对象在工程项目中引用到DAO时会被自动创建;Error对象在发生数据库操作错误时处理错误和保存相关信息;Workspace对象管理一个数据库会话;Database对象对一个数据库进行创建或打开;TableDef对象可以访问单个数据表的所有字段(Field对象)和数据表的索引(Index对象);QueryDef对象定义一个查询;Recordset对象代表一个表的记录集或者查询命令执行的结果;Relation对象用来定义不同数据表或查询中字段之间的相互关系;Field对象对应着一个数据表中的某个字段;User对象代表了数据库的某个用户;Group对象则包含了具有相同权限的一组用户。
与使用Jet的DAO对象模型相比较,使用ODBC Direct的DAO对象模型去掉了数据库中的处理对象,新增了Connection对象。Connection对象代表一个到指定数据源的成功连接[3]。
使用Jet的DAO对象模型特点是支持多表连接的Recordset对象中数据的更新;支持不同数据源中数据表的连接;支持对DDL(数据定义语言)的操作;支持将ODBC数据源中的数据与窗体紧密结合。使用ODBC Direct的DAO对象模型特点是支持直接访问ODBC数据源,进而使程序代码执行速度更快、效率更高;支持访问特定的服务器;支持数据的批量更新。
DAO可以识别3类数据库:VB数据库,也就是*.mdb数据库;索引顺序访问方法(Indexed Sequential Access Method, ISAM)数据库;ODBC数据库。
使用DAO技术可以对Microsoft Jet引擎数据库方便的进行访问,但由于Microsoft Jet不支持多线程,因此,必须对调用到应用程序主线程的所有DAO进行限制。
RDO提供了一系列对象,用来满足远程数据访问的特殊要求[4]。它是位于ODBC应用程序接口之上的对象模型薄层,它基于ODBC应用程序接口、选定的ODBC驱动程序以及后端数据库引擎来实现大部分的功能,它具备基本的ODBC处理方法,可以对大部分ODBC 应用程序接口函数直接进行执行,从形式上凸显出所有ODBC的底层功能以及灵活性,是远程访问ODBC关系数据库中数据的有效界面接口。
RDO是基于DAO衍生出来的,两者之间最大的不同在于其数据库模式。DAO操作是针对数据表中的记录和字段,而RDO操作是针对行和列的,也就是说DAO是ISAM模式,RDO是关系模式。此外,DAO是访问Jet引擎(Jet是ISAM)的接口,而RDO则是访问ODBC的接口。因此,RDO是综合了DAO/Jet,VBSQL/DB Lib,ODBC三者优点的对象,其对象模型如图3所示。
图3 RDO对象模型
RDO对象模型中重要对象说明:rdoEngine对象在应用程序第一次访问RDO时会自动创建;rdoError对象当发生错误时被自动创建,其用于处理RDO所产生的ODBC错误和消息;rdoEnvironment对象为连接及事务作用域的一个逻辑集合做定义;rdoConnection对象表示分配或打开远程数据源上特定数据库之间的一个连接;rdoQuery对象是定义一个SQL查询;rdoResultset对象表示对一个查询所产生的数据行直接运行;rdoTable对象表示存储定义一个基本表或SQL视图;rdoParameter对象表示与rdoQuery相关联的某个参数;rdocolumn对象表示含有公共数据类型和公共属性的列数据;rdoPrepareStatement对象预先定义了一个查询。
RDO只有在后台(服务器端)有数据库存在的前提下才可运行,它是针对SQL Server和Oracle等大型关系数据库而特别设计的。VB完全集成RDO,RDO具有直接访问SQL Server存储过程、支持Transact-SQL以及Visual Database Tools的集成化等优势。RDO的特点是:应用程序可访问ODBC数据源而不需要使用本地的查询处理程序;可以执行与数据定义或数据操作有关的查询;可以执行查询操作并对任意数量的结果集进行处理;可以限制返回或处理的数据行数;可以对简单的无游标结果集或更为复杂的游标进行创建;可以在不妨碍执行查询的情况下,对远程数据资源产生的所有信息和错误进行监控。许多大型关系数据库开发者经常选用RDO来访问数据库。
ADO是DAO,RDO的后继产物,实际上是一种面向对象的,提供访问各种数据类型的连接机制[5]。它通过对对象链接和嵌入数据库(Object Link and Embedding DataBase, OLE DB)进行封装,具备了OLE DB所有的功能,OLE DB是一种底层数据访问界面接口,是用于第三方驱动程序商家开发输出数据源到ADO的数据库组件,其不能被VB直接调用[6]。ADO通过OLE DB可以访问任何类型的数据源。
在VB中提供了两种与ADO有关的访问数据的方法:Data控件和ADO对象模型。
使用ADO Data控件可以快速建立数据提供者与数据绑定控件之间的连接[7]。ADO Data控件通过Recordset对象支持访问数据库中数据,并允许将指针在不同记录之间移动,从而对记录进行显示和操纵。ADO Data控件虽然能够操作、访问数据库,但是它并不能够显示数据库中数据的内容。ADO Data控件需要与其它控件结合使用。这些与ADO Data控件结合使用的控件(DataList控件、DataCombo控件和Datagrid控件)称之为“数据察觉控件”。在对Data控件中数据的相关属性设置好的前提下,无需编写代码或者只需编写少量的代码就可以达到数据访问的目的,同时,可以结合数据察觉控件来显示和修改数据。
ADO对象模型如图4所示。
图4 ADO对象模型
ADO对象模型“扩展”了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象,更多的属性、方法以及事件。ADO同DAO和RDO一样,其对象模型是层次型的,即一个较低的数据对象是几个较高层次对象的子对象[8]。
ADO对象模型中重要对象说明:Connection对象包含相关数据提供程序和结构描述的信息;Command对象包含某个命令;Recorded对象用来对数据操作返回的记录集进行存储;Errors对象包含数据提供程序出错时的扩展信息;Properties对象包含某个ADO对象提供程序的定义特征; Parameter对象包含Command对象的某单个参数的信息;Fields对象包含记录集中数据的某单个列的信息[8]。
使用ADO Data控件的特点是:ADO Data控件封装了相应代码的功能;简化了数据表浏览、添加、修改记录方面的操作。使用ADO模型的特点是:灵活性强,便于使用,可以动态的指定数据源,可以打开同一个数据源上多个记录集或执行同一个数据源上多个命令,可以建立独立的连接对象;可以操作任何的OLE DB数据源,不损失任何OLE DB的功能;支持多种编程语言;可扩展性好,能够基于数据提供者属性集合动态地对数据提供者进行指定。
介绍的3种在VB环境下的数据访问技术,每一种都代表了数据库访问技术经历和发展的一个重要阶段,其中ADO可以快速而方便地访问不同数据源,占用内存少[9],所以其发展前途也很好,已经成为当前数据库开发的主流,但是,ADO并不完全支持或兼容DAO和RDO的所有功能,所以需要熟练掌握3种数据库访问技术,从而出色完成VB环境下数据库的开发工作。
[1] 李国华.个性化教学设计建模的研究与实现[D]:[硕士学位论文].南京:东南大学,2005.
[2] 马思红,陆扬.基于VB的SQL Server数据库访问技术[J].电脑与电信,2007(10):56-57.
[3] 谷震离.VB远程访问SQL Server数据库技术分析与比较[J].广东经济管理学院学报,2005(2):71-75.
[4] 张仁霖.浅谈Visual Basic 6.0的数据库功能[J].安徽电子信息职业技术学院学报,2006(5):95-96.
[5] 范乃英,王兰林.谈VB的数据库访问技术[J].河南财政税务高等专科学校学报,2008(6):81-83.
[6] 张勇.VB数据库开发方案的比较[J].宿州教育学院学报,2003(4):71-73.
[7] 张宗飞.VB中基于ADO的数据库访问技术分析及应用[J].计算机与数字工程,2008(3):53-56,165.
[8] 张磊.VB中用ADO对象动态访问Access[J].长春师范学院学报,2004(5):36-39.
[9] 陈长青,王萍.数据库技术在光电设备远程控制系统中的应用[J].长春工业大学学报:自然科学版,2007,28(3):257-260.
Research of database access technology based on Visual Basic environment
QIU Wei-ming
(Wuxi Institute of Commerce, Wuxi 214153, China)
Three different database access technologies based on VB, which are Data Access Object (DAO), Remote Data Object (RDO) and ActiveX Data Object (ADO) respectively, are studied. The principles and features of the technologies are discussed in detail.
VB; database; access technology.
2014-05-20
国家教师科研十二五规划重点课题基金资助项目(GJL1321360)
仇伟明(1980-),男,汉族,江苏无锡人,无锡商业职业技术学院讲师,硕士,主要从事计算机网络、软件工程方向研究,E-mail:qiuweiming0617@163.com.
TP 399
A
1674-1374(2014)05-0490-05