在上一遍文章中我们说了VB中基于ADO的数据库访问,接下来让我们一起来看一下ADO的七个对象,其中我们会重点讲述Command和Recordse两个对象。
我们先通过下面这张图对ADO的七个对象有一个大概的了解:
从图中的关系线以及我们可以看出,当我们通过Connection对象与数据源建立连接以后,既可以通过Recordset对象对数据进行操作,也可以通过Command命令对象来执行查询,然后在传送给Recordset对象进行数据操作。
下面我们先说Recordset对象:
例如:
- Dim objCn As New Connection Dim objRs As New Recordset
- Dim strCn As String
- Dim strSQL As String
- '建立数据库连接
- objCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
- "Data Source=" & App.Path \实例1.mdb"
- objCn.Open
- '执行查询命令,获得用户登录口令
- strSQL = "SELECT 口令,身份 FROM 系统用户 WHERE 用户名='" & UserName & "'"
- Set objRs.ActiveConnection = objCn
- objRs.Open (strSQL)
- With objRs '创建客户端的记录集
- .CursorLocation = adUseClient '指定使用客户端光标
- .CursorType = adOpenStatic '指定使用静态光标
- .Open "系统用户", objCn, adOpenStatic, adLockReadOnly
- End With
- ShowData (lngPage) '显示当前记录页数
我们来说一下Command对象:
使用Command对象之前,我们需要执行一下步骤:
1.通过设置ActiveConnection属性是打开的连接与Command对象关联。
2.使用CommandText属性定义命令(如SQL,储存过程)的可执行文本。
3.使用commandType属性指定命令类型。通过Parameter对象和Parameters集合定义参数化查询或存储过程参数。
4.使用Execute方法执行命令并在适当的时候返回Recordset对象
5.使用 CreateParameter方法创建一个与命令相关的新的参数对象。
6.将Command对象传递给Recordset的Source属性以便获得数据。
具体实现:
- Private Sub Form_Load()
- Dim strcn As String
- Set objCn = New Connection
- strcn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;" & "Data Source=" & App.Path & "\实例5.mdb"
- objCn.ConnectionString = strcn
- objCn.Open
-
- '创建执行参数查询的command 对象 objcmd
-
- Set objCmd = New Command
- Set objCmd.ActiveConnection = objCn '创建连接
-
- With objCmd
- .CommandText = "select * from 系统用户 where 用户名 like ?" & "and 身份 like ?"
- '定义命令的可执行文本
- .CommandType = adCmdText '指定命令类型
- End With
- '为command对象创建参数
- 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
- et objRs = New Recordset
-
-
- objCmd("用户名") = "%" & Trim(txtUserName) & "%" '%是什么意思???
-
-
- objCmd("身份") = "%" & txtStatus & "%"
-
- Set objRs = objCmd.Execute() '返回recordset对象
- lbl4 = ""
- End Sub
我们还可以在一个Recordset对象实体中使用command对象:
- Set cmd.ActiveConnection = cn
- cmd.CommandText = strSql
- cmd.CommandType = adCmdText
- rs.Open cmd, , adOpenStatic, adLockOptimistic