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,datagrid,integer,object,编程)