在上一遍文章中我们说了VB中基于ADO的数据库访问,接下来让我们一起来看一下ADO的七个对象,其中我们会重点讲述CommandRecordse两个对象。

我们先通过下面这张图对ADO的七个对象有一个大概的了解:

 

 计算机生成了可选文字: 非独立对象+l错公吴才,J象,依性连接对象。保存访问数据库过程中发生的错误,可以通免应用程序意外终止ErrorConneCtion连接对象,用于创建数据深连接。,一‘赞何数据库操作的革础’ACtiy6C0nnC6tion睁.-J'.,参数对象,依假于命令对象.用于为参数查询提供数据。同时使用参敛对象和命令对象,可使数据库对查询进行预编译,从而提高执行速度Act肠廿eConned.on属忖p己r己nleter鹿卜Command命令对象用于执行动作查询、、‘电沪z产:.:'-、,甘鱿。协.方法碑子护户一夕护,户户l字段对象,依枚于记录集对象。获得记录染中的每一个字段的伯息FieldReCOrdset记录集对象。保存来自葵本表或命令对象返lr.]的结果。使用记录集对象几乎可以完成所有的数据操作属性对象,除了Error错误对象以外,拼一个对象都有。可以访问特定对象的主要伯息Property甲

 

     从图中的关系线以及我们可以看出,当我们通过Connection对象与数据源建立连接以后,既可以通过Recordset对象对数据进行操作,也可以通过Command命令对象来执行查询,然后在传送给Recordset对象进行数据操作。

下面我们先说Recordset对象:

计算机生成了可选文字: adusecllent:客户端临时表,可以提供重新排序和使用索引查找记录等adUseserver:服务器端临时表,由服务器端的被检索的数据源维护ACtiVeC0nn仁etion代表数据源的活动连接CUrS0rLOCationadlockReadonlv,默认值,只读,无法更改数据adL0ckpessimistic:保守式记录锁定,在编辑时立即锁定数据源adLockoptimistic:开放式记录锁定,执行updata方法时锁定记录adlockoatc卜optimistic,开放式批更新,执行updataoatch方法时锁定记录Open打开记录集。例如:objrs.open(’·soL〔cT口令rROM系统用户wH〔R〔用户名=,’王永俊,'")LockTypeR6COrdSRecordCount:确定记录集中的记录数测试当前记录位置是否位于记录集的第·个记录之前.如果位于则返回丫rue,否则返回falseBOf测试当前记录位置是否位于记录集的最后一个记录之后。如果位于则返回下rue,否则返回falseEOf,HOVeFirstMOVeNeXtMOVeL日StMOVePreVIOUS

例如:

        

  1. Dim objCn As New Connection         Dim objRs As New Recordset  
  2.     Dim strCn As String  
  3.     Dim strSQL As String  
  4.            '建立数据库连接  
  5.         objCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _  
  6.                                                 "Data Source=" & App.Path \实例1.mdb"  
  7.         objCn.Open  
  8.         '执行查询命令,获得用户登录口令  
  9.         strSQL = "SELECT 口令,身份  FROM 系统用户 WHERE 用户名='" & UserName & "'"                                                                                     
  10.         Set   objRs.ActiveConnection = objCn  
  11.         objRs.Open (strSQL)  
  12.         With objRs               '创建客户端的记录集  
  13.             .CursorLocation = adUseClient       '指定使用客户端光标  
  14.             .CursorType = adOpenStatic          '指定使用静态光标  
  15.             .Open "系统用户", objCn, adOpenStatic, adLockReadOnly  
  16.         End With  
  17.         ShowData (lngPage)                   '显示当前记录页数  

我们来说一下Command对象:

使用Command对象之前,我们需要执行一下步骤:

   1.通过设置ActiveConnection属性是打开的连接与Command对象关联。

   2.使用CommandText属性定义命令(如SQL,储存过程)的可执行文本。

   3.使用commandType属性指定命令类型。通过Parameter对象和Parameters集合定义参数化查询或存储过程参数。

   4.使用Execute方法执行命令并在适当的时候返回Recordset对象

   5.使用 CreateParameter方法创建一个与命令相关的新的参数对象。

   6.Command对象传递给RecordsetSource属性以便获得数据。

具体实现:

  1. Private Sub Form_Load()  
  2.         Dim strcn As String  
  3.         Set objCn = New Connection  
  4.         strcn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;" & "Data Source=" & App.Path & "\实例5.mdb"  
  5.         objCn.ConnectionString = strcn  
  6.         objCn.Open  
  7.           
  8.         '创建执行参数查询的command 对象 objcmd  
  9.           
  10.         Set objCmd = New Command  
  11.         Set objCmd.ActiveConnection = objCn   '创建连接  
  12.           
  13.         With objCmd  
  14.             .CommandText = "select * from 系统用户 where 用户名 like ?" & "and 身份 like ?"  
  15.             '定义命令的可执行文本  
  16.             .CommandType = adCmdText  '指定命令类型  
  17.         End With  
  18.         '为command对象创建参数  
  19.         Dim parm As New Parameter  
  20.             Set parm = objCmd.CreateParameter("用户名", adVarChar, adParamInput, 10)  
  21.             objCmd.Parameters.Append parm  
  22.             Set parm = objCmd.CreateParameter("身份", adVarChar, adParamInput, 10)  
  23.             objCmd.Parameters.Append parm  
  24.             et objRs = New Recordset  
  25.           
  26.           
  27.         objCmd("用户名") = "%" & Trim(txtUserName) & "%"    '%是什么意思???  
  28.           
  29.   
  30.         objCmd("身份") = "%" & txtStatus & "%"  
  31.           
  32.         Set objRs = objCmd.Execute() '返回recordset对象  
  33.             lbl4 = ""  
  34. End Sub  

 

我们还可以在一个Recordset对象实体中使用command对象

  1. Set cmd.ActiveConnection = cn  
  2. cmd.CommandText = strSql  
  3. cmd.CommandType = adCmdText  
  4. rs.Open cmd, , adOpenStatic, adLockOptimistic