VB中数据库访问技术的应用研究

2014-09-02 09:44王素芳
科技视界 2014年12期
关键词:驱动程序数据源控件

王素芳

(广东白云学院 电气与信息工程学院,广东 广州 510430)

0 引言

自Visual Basic 3.0开始,Visual Basic就具有数据库连接和数据处理功能。在Visual Basic 6.0版中,数据库功能得到了空前的增强。Microsoft公司把许多新的数据访问功能加到Visual Basic中,使得该产品成为数据库应用程序开发的理想平台。Visual Basic提供了众多功能各异的数据控件,利用这些控件,用户只要编写少量代码甚至不编写任何代码就可以访问数据库,对数据库进行浏览及其他操作。Visual Basic还提供了几种不同的数据库对象模型,以实现对面向不同应用的数据库的全面处理,利用这些模型中的一种或者几种,可以对几乎所有种类的数据库进行操作。

1 VB中的数据库访问技术

VB中将数据库分为了3种类型:

(1)本地数据库:主要指Microsoft Access数据库。

(2)外部数据库:是指采用 ISAM (Indexed Sequential Access Method,索引顺序访问方法)的数据库,比如 dBase、Foxpro、Paradox 和Excel等。

(3)远程数据库:指 SQL Server、Oracle、DB2 等大型数据库,当前的大型数据库应用程序基本上都是以这类数据库为后台。

1.1 通过VB访问数据库

VB可通过不同的方式与目前较为流行的大多数数据库进行连接。

传统的连接方法主要有JET数据库引擎 (JET)、Microsoft ODBC(Open Database Connectivity,开放式数据库连接)驱动程序、OLE DB。

(1)Jet引擎:联合数据库引擎,是Microsoft公司开发的用于本地数据库(比如 Access)、外部数据库(比如 dBase、Excel、Paradox)的数据库引擎。它也可以访问远程数据库(比如SQL Server、Oracle),但必须通过ODBC来转接。

(2)ODBC:开放式数据库连接,是一种建立数据库驱动程序的标准,当前几乎所有的DBMS都支持这种数据库引擎。ODBC是在数据库和应用程序之间提供的一个抽象层,即通过驱动程序和游标库来和数据库进行通信。这样,通过ODBC就可以使用本地化的协议来访问所有支持ODBC的数据库了。

(3)OLE DB:微软公司于1996年提出了一种新的数据库访问策略UDA (Universal Data Access),它的核心是一系列组件对象模型(COM)接口,被命名为OLE DB。这些接口允许开发人员创建数据库提供者(Data Providers)。数据提供者能够很灵活地表达各种格式存储的数据,通用性比ODBC更好、更灵活。

1.2 VB中访问数据库的常用技术

VB集成开发环境提供的数据库访问技术主要有DAO、ODBC API、RDO和ADO等。目前的主流技术是ADO技术。

(1)DAO

数据访问对象 (Data Access Object)DAO方式是允许程序员操作Microsoft Jet数据库引擎的第一个面向对象的接口。Jet数据库引擎是一种用来访问Microsoft Access和其它数据源的记录和字段的技术。DAO访问SQL Server数据库有两种不同的对象模型可供选择:一种对象模型是通过Jet引擎来访问数据;另一种是通过ODBC Direct来访问数据。这两种对象模型都是层次结构的。使用DAO的程序编码非常简单,其模型是设计关系数据库系统结构的对象类的集合,它们提供了完成管理这样一个系统所需的全部操作的属性和方法。

(2)ODBC API

用ODBC API编程开放数据库连接ODBC(Open Database Connectivity)的思想是访问异种数据库的一种可移植的方式。ODBC API是一套复杂的函数集,可提供一些通用的接口,以便访问各种后台数据库,与数据资源对话的公用函数组装在一个称为驱动程序管理器(ODBC.DLL)的动态连接库中。应用程序调用驱动程序管理器中的函数,而驱动程序管理器通过驱动器(SQL Server.DLL)把它们送到服务器中。

(3)RDO

远程数据对象(Remote Data Object)RDO方式是提供给开放数据库互连(ODBC)数据源的面向对象的接口。RDO是位于ODBC API之上的一个对象模型层,它依赖ODBC API、ODBC驱动程序以及后端数据库引擎来实现,用RDO所编的程序短小、快速。RDO是开发Microsoft SQL Server,Oracle和其它大型关系数据库应用程序的绝大多数数据库开发者使用的对象模型。与DAO相比,RDO提供了前所未有的连接和查询速度,但它对SQL Server和Oracle以外的数据库的存取性能没有保证,微软已经推荐使用ADO替换RDO。

(4)ADO

为了克服DAO和RDO的缺点,提供一种统一的数据库访问技术,Microsoft提出了ADO技术。ADO是应用层的编程接口,它封装并实现了OLE DB(Object Linked and Embed Database,对象链接与嵌入式数据库)的所有功能,在继承OLE DB的同时,大大简化了OLE DB的操作。它通过OLE DB提供的COM接口访问数据,可访问各种类型的数据源,既适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO主要采用OLE DB访问数据库,也支持ODBC访问,但需要经过OLE DB转接。

2 ADO技术

2.1 ADO模型

ADO是Microsoft公司提出的第三种数据库访问对象,是Microsoft数据库访问技术的一个主要发展方向,它把OLE DB封装在一个数据对象中,使得VB程序可以方便地实现对数据库的访问。

ADO与其他对象模型的主要区别在于它的简单和非层次结构。这种对象模型共包含7个对象,即Connection、Command、Recordset、Parameter、Property、Field 和 Error。其中最常用的是Connection、Command、Recordset和Field 4个对象。它们的具体功能是:

(1)Command对象:包含关于某个命令(如查询字符串,参数定义等)信息。

(2)Connection对象:包含某个数据提供程序的信息。

(3)Error对象:包含数据提供程序出错时的扩展信息。

(4)Property对象:包含某个ADO对象的提供程序定义的特征。

(5)Parameter对象:包含参数化的Command对象的某单个参数的信息,该Command对象有一个包含其所有Parameter对象Parameters集合。

(6)Recordset对象:包含某个查询返回的记录,以及记录中的游标。Recordset对象只代表一个记录集,这个记录集是一个连接的数据库中的表,或者是Command对象的执行结果返回的记录集。在ADO对象模型中,在行中检查和修改数据是最主要的方法,所有对数据的操作几乎都是在Recordset对象中完成的。Record对象用于指定行、移动行、添加、更改、删除记录。

(7)Field对象。包含记录集中数据的某单个列的信息。

2.2 使用ADO技术访问数据库

使用ADO技术访问数据库有三种方法∶使用ADO数据控件、使用ADO对象、通过SQL语句访问数据库。使用ADO数据控件可以使用户很方便地不用编程或编写很少的代码就可以访问数据库数据。使用ADO对象可以实现更复杂、更灵活的数据访问。由于ADO不具有显示数据的功能,因此要将数据操作结果在用户界面上显示出来,就要靠数据绑定控件来实现。

2.2.1 ADO数据控件

ADO数据控件支持OLE DB数据访问模型,既可以访问Oracle、SQL Server等大型关系型数据库管理系统,也可以访问Access、FoxPro等小型桌面数据库管理系统,还可以访问文本数据、邮件数据、图形数据等。因此说,使用ADO数据控件几乎可以访问各种类型的数据源。ADO数据控件的名称为“Adodc”,它是一个ActiveX控件,必须手工添加到工具箱中才能使用。在“部件”对话框的“控件”选项卡中选中“Microsoft ADO Data Control 6.0(OLE DB)”复选框即可添加Adodc控件到工具箱。ADO数据控件的主要属性有∶

1)ConnectionString 属性

ConnectionString属性用于建立到数据源的连接,它指定连接到数据源的OLE DB数据访问接口和具体的数据库文件。不同的数据源要使用不同的OLE DB数据访问接口,由ConnectionString属性的Provider参数指定所用的OLE DB接口;由ConnectionString属性的Data Source参数指定具体的数据库文件;另外,还可以指定连接数据库的用户名和密码等信息。下面给出连接到Access数据库student.mdb实例∶

Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& App.Path&"student.mdb;Persist Security Info=False"

2)CommandType 属性

CommandType属性指明命令的类型,即要访问的数据的具体来源。这个属性要和RecordSource属性配合使用。

3)RecordSource 属性

RecordSource属性设置ADO记录集的内容,这个内容可以来自数据库中的一张表、一个查询语句或者来自一个存储过程的执行结果。如果CommandType属性的取值为adCmdTable,则RecordSource属性的内容是一个表名,ADO记录集是对此表无条件查询得到的结果;如果CommandType属性的取值为adCmdText,则RecordSource属性的内容是一个查询语句文本串,ADO记录集是执行此查询语句文本产生的结果;如果CommandType属性的取值为 adCmdStoredProc,则RecordSource属性的内容是一个存储过程名,ADO记录集执行此存储过程产生的结果;CommandType属性的默认值为adCmdUnknown,表示RecordSource属性中的命令类型未知。

4)Recordset属性

Recordset属性又称为记录集,它本身又是一个对象。VB应用程序一般就是通过记录集来操作数据库的,所以记录集是VB应用程序和数据库之间相互连接的桥梁。在访问数据库的时候,设置好ConnectionString属性、CommandType属性和Record-Source属性后,执行RecordSource属性的结果就放在Recordset中。

ADO数据控件最重要的方法是Refresh。Refresh方法用于更新ADO数据控件属性,使修改后的ADO数据控件属性生效。所以当改变了ADO数据控件属性后就要执行Refresh方法。

2.2.2 外部数据绑定控件

要将数据操作结果显示出来要使用数据绑定控件。VB中的TextBox、CheckBox、ComboBox、ListBox等标准控件都是数据绑定控件,但是这些标准控件只能显示记录集中一个列的值。除了这些标准控件外,还有一些ActiveX控件也可以实现数据绑定功能,这些控件称为外部数据绑定控件。常见的外部数据绑定控件有DataCombo、DataList、DataGrid、MSHFGrid、MSFlexGrid等,这些外部数据绑定控件提供了比标准控件更加强大的功能,比如有些控件能显示记录集的全部内容。

以DataGrid控件为例来看外部数据绑定控件的用法。下面给出一个实例,这个例子使用ADO数据控件从student.mdb数据库的student表中查询所有sex="女"的记录的学号和姓名,再使用外部数据绑定控件DataGrid把学号和姓名显示出来∶

Private Sub Command1_Click()

Adodc1.Visible=False

DataGrid1.AllowAddNew=False

DataGrid1.AllowUpdate=False

DataGrid1.AllowDelete=False

DataGrid1.Caption="女生信息"

Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& App.Path& "student.mdb;Persist Security Info=False"

Adodc1.CommandType=adCmdText

Adodc1.RecordSource="select xh,xm from student where sex="女"

Adodc1.Refresh

Set DataGrid1.DataSource=Adodc1

DataGrid1.Refresh

DataGrid1.Columns.Item(0).width=1200

DataGrid1.Columns.Item(1).width=1200

DataGrid1.Columns.Item(0).Caption="学号"

DataGrid1.Columns.Item(1).Caption="姓名"

End Sub

2.2.3 通过SQL语句访问数据库

在VB应用程序中主要用这个对象建立与数据库的连接,一般的方法是:

(1)声明并创建对象

Dim ADOcn As Connection’声明对象

Set ADOcn=New Connection’创建新对象,或将上述两条语句直接写成:

Dim ADOcn As New Connection。

(2)建立数据库连接

一般通过下列语句完成与数据库(源)的连接:ADOcn.Open连接字符串。

(3)对数据表进行更新操作

可以利用Connection对象对数据库中的基本表进行增加、删除、修改等不返回结果集的操作,语法如下:ADOcn.Execute SQL语句。

3 结束语

VB的数据库访问技术,历经了DAO、RDO、ADO等重要阶段。ADO是DAO/RDO的后继产物,尽管Visual Basic 6.0仍然支持DAO和RDO两种数据访问接口,但其核心与重点已经转移到ADO/OLEDB数据访问技术上。ADO作为最新的数据库访问模式它具有功能强、通用性好、效率高、占空间少等特点。ADO数据控件易于掌握、代码短小,但是程序灵活性较差,而ADO对象功能强大、灵活性好,在具体开发的时候要灵活运用这两种方法。我们在实际开发中,对数据库的操作更适合采用对象模型编程方式,以便更灵活地对数据库进行操作。

[1]黄玉春.Visual Basic程序设计与实训教程[M].北京:清华大学出版社,2006.

[2]祝旭.VB访问数据库的三种技术[J].湖南工业职业技术学院学报,2010(8)∶8-9.

[3]吴青林,王焱.VB中ADO访问数据库技术探讨[J].软件导刊,2010(2)∶151-152.

[4]陈英.Visual Basic程序设计教程[M].大连理工大学出版社,2007.

[5]李志伟.VB环境下基于ADO的Oracle数据库访问[J].电脑开发与应用,2009(09)∶60-62.

[6][美]Grey perry.学用 Visualbaisc6.0[M].戴红,陈吉吉,姚娜,译.清华大学出版社.

猜你喜欢
驱动程序数据源控件
计算机硬件设备驱动程序分析
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
基于真值发现的冲突数据源质量评价算法
ASP.NET服务器端验证控件的使用
基于MPC8280的CPU单元与内部总线驱动程序设计
分布式异构数据源标准化查询设计与实现
Spreadsheet控件在Delphi数据库系统中的编程与应用