VB中基于ADO的数据库访问

VB中常用的数据库访问接口有三种,即DAORDOADO三种对象模式。三种模式的具体解释见上篇文章:

DAO/RDO/ADO,ODBC,OLEDB之间的关系

本篇文章我们重点介绍一下ADO的应用。

一:ADO的简介

ADOActiveX Data Object)是由微软公司开发的最新的数据库访问接口技术,因为ADO技术对OLEDBObject Link and Embedding DataBase)进行了封装并实现了OLEDB所有的功能,所以ADO通过OLEDB可以访问任何类型的数据源,并且减少了编程量。ADO访问数据库的体系可以概括为:

二:基本流程:

ADO访问数据库的目标是访问、编辑和更新数据源,因此使用ADO进行数据访问时,一般需要经过一下步骤:

1)创建一个数据源的连接,连接数据库。

Set objCn = NewConnection

strcn ="provider=microsoft.jet.oledb.4.0;persist security info=false;" &_

"data source=" &App.Path & "\实例1.mdb"

objCn.ConnectionString = strcn

objCn.Open

2)设置一个命令来访问数据源的数据。

3)执行命令。

Set objCmd = New Command

Set objCmd.ActiveConnection = objCn

With objCmd

.CommandText = "select * from 系统用户where 用户名 like ?" & "and 身份 like ?"

.CommandType = adCmdText

End With

Dim Parm As New Parameter

Set Parm =objCmd.CreateParameter("用户名", adVarChar, adParamInput, 10)

objCmd.Parameters.Append Parm

Set Parm =objCmd.CreateParameter("身份", adVarChar, adParamInput, 10)

objCmd.Parameters.Append Parm

4)如果命令的执行导致返回数据库中表的某些行,则将他们保存在缓存中,产生相应的数据集对象,以便对其进行操作。

5)通过数据集对象进行各种操作,包括修改,添加,删除等。

Private Sub Form_Load()

Set objCn = New Connection

objCn.Open "DSN=实例2DSN"

Set objRS = New Recordset

With objRS

.CursorLocation = adUseClient

.CursorType = adOpenDynamic

.LockType = adLockOptimistic

.Open "select * from 系统用户",objCn

End With

txtUsername =objRS.Fields("用户名").Value

txtPassword =objRS.Fields("口令").Value

txtMsg = objRS.AbsolutePosition &"/" & objRS.RecordCount '直接跳至某条记录

End Sub

6)更新数据源,即将修改的结果返回数据源。

objRS.Update

7)结束连接

Set objRS = Nothing

objCn.Close

Set objCn = Nothing

以上是ADO连接数据库的大概步骤,而实际应用时应根据具体情况灵活应用,有时可能只需执行部分步骤即可达到要求。

三:具体方法

VB中,使用ADO访问数据库主要有两种方式:一种是使用ADO Date控件,通过对控件的绑定来访问数据库中的数据。一种是使用ADO对象模型,即编程访问方式(上面的举得例子就是这种方式)

1.使用ADO Data控件

可以快速建立数据绑定控件和数据提供者之间的连接。

在实现数据访问时,只需设置好ADO Data控件的数据相关的属性,无需编写程序代码或者只需少量的代码就可以实现数据访问,同时也可以结合DataGrid控件来实现数据的显示和修改。

具体步骤不在呈现!

2.使用ADO对象模型访问数据库

如上图,ADO对象模型共包括七个对象,三个主要对象和四个依赖于主要对象的对象集合,他们的关系可以概括为:

下面我们举一个简单的例子,访问数据库并执行一个简单的查询命令:

声明变量:

Dim objRS AsRecordset '用于保存数据源记录集

Dim objCn AsConnection '用于创建数据源连接

Dim isNeedSave AsBoolean '用于标识是否需要执行保存操作

Private SubForm_Load()

建立数据库连接:

Set objCn = New Connection '实例化Connection对象

strcn ="Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=" & App.Path & "\数据库\db1.mdb"

objCn.Open strcn '建立数据库连接

'创建客户端的记录集

Set objRS = New Recordset

With objRS

.CursorLocation = adUseClient '指定游标位置

.CursorType = adOpenStatic '指定使用键集游标

.LockType = adLockOptimistic '指定锁定类型

.Open "SELECT * FROM 系统用户",objCn

End With

'显示第一个记录数据

txtUserName =objRS.Fields("用户名").Value

txtPassword =objRS.Fields("口令").Value

txtMsg = objRS.AbsolutePosition &"/" & objRS.RecordCount

End Sub

’善后工作:

Private SubForm_Unload(Cancel As Integer)

Set objRS = Nothing '释放记录集对象

objCn.Close '释放数据库连接

Set objCn = Nothing '释放连接对象

End Sub

两种ADO数据库访问方式的特点:

1)使用ADO控件几乎封装了相应代码的所有功能,简化编程。但是也造成了它的灵活性较差,一般一个ADO Data控件只能在同一个数据源上打开一个记录集或者执行一个查询命令。而使用ADO对象模型就要灵活的多,可以建立独立的连接对象,可以在同一个数据源上打开多了记录集或执行多个命令。可动态的指定数据库的来源地。

2)使用ADO Data控件可以简化操作过程,但功能上有所限制,很多功能都是静态的,在运行时很难改变。而使用ADO对象模型能够自由的控制各种操作。

3)使用ADO Data控件在数据表记录的浏览、添加。修改上提供了简化操作,但如果数据库过大的话,就会造成效率低下。

也就是说:ADO控件最大的优点就是操作简单,但是灵活性和功能以及效率上没有ADO对象模型好。在使用时我们应该根据具体情况而定,用ADO Data控件访问小型的数据库应用程序,而大型的数据库应用程序的开发采用ADO对象模型来实现。

只是学习了一些皮毛,不对的地方欢迎大家指正!

你可能感兴趣的:(VB中基于ADO的数据库访问)