红皮书再总结——实例五
实例5 数据查询
(一)制作特点:
第一、使用ADO Command对象创建参数查询以查询数据库
第二、使用MSFlexGrid控件以表格的方式显示查询结果
(二)设计分析:
方法一、使用查询参数构造SQL Select语句,然后使用ADO Command对象或RecordSet对象执行查询语句。
方法二、使用ADO Command 对象创建参数查询√
方法三、先执行Select语句获取数据库数据,将其存放到RecordSet对象中,然后执行Recordset对象的Find方法查找符合条件的记录,或者设置Recordset对象的Filter属性筛选符合条件的记录。
(三)技术要领:
1.MSFlexGrid控件中数据的添加和清除
添加:object.AddItem(string,index)
清除:MSFlexGrid.Clear
删除指定行:MSFlexGrid.RemoveItem(2)
2.使用Command对象创建参数查询
①创建Command对象:(?作为Select语句中的查询参数)
objCmd.CommandText="SELECT * FROM 系统用户 WHERE 用户名 LIKE ?"
②使用Command对象:
Dim Parm As New Parameter
Set Parm=objCmd.CreateParameter("用户名",adVarChar,adParamInput,10)
objCmd.Parameters.Append Parm
③设置查询参数的值
objCmd("用户名")="admin"
④执行Command对象的Execute方法完成查询
(四)操作过程:
(1)创建数据库
实例5真是错误百出,这5个例子我用的都是一个数据库,后来发现书中有三个字段“用户名”、“口令”和“身份”,但由于我用的实例1的数据库,只有两个字段。所以重新创建一个数据库,添加三个字段。
(2)设计窗体
①工程——部件——Microsoft FlexGrid Control 6.0
②三个标签框+两个文本框+一个命令按钮+MSFlexGrid控件
(3)编写代码
Private Sub cmdQuery_Click()
Dim objRs As New Recordset '定义局部记录集对象
objCmd("用户名") = "%" & txtUser & "%" '获得查询参数
Set objRs = objCmd.Execute() '执行查询,获得查询结果记录集
MSFlexGrid1.Cols = objRs.Fields.Count '显示列名,cols:列rows:行
For i = 0 To objRs.Fields.Count - 1
MSFlexGrid1.TextMatrix(0, i) = objRs.Fields(i).Name
Next
n = 0
If txtUser.Text = "" Then
MSFlexGrid1.Clear
MSFlexGrid1.Rows = 1
Else
While Not objRs.EOF
MSFlexGrid1.Clear
For i = 0 To objRs.Fields.Count - 1
MSFlexGrid1.TextMatrix(0, i) = objRs.Fields(i).Name
Next
MSFlexGrid1.Rows = 1
MSFlexGrid1.AddItem (objRs!用户名 & vbTab & objRs!口令) 'vbTab:制表符。
n = n + 1
objRs.MoveNext
Wend '显示获得的记录条数
Label4 = "共获得" & n & "条查询结果"
End If
End Sub
Private Sub Form_Load()
MSFlexGrid1.Rows = 1 '新增加
Set objCn = New Connection '实例化Connection对象objCn
strCn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security info=False;" & "Data Source=" & "C:\Users\TXG\Desktop\实例5.mdb"
objCn.ConnectionString = strCn '创建数据库连接
objCn.Open '创建执行参数查询的Connection对象objCmd
Set objCmd = New Command
Set objCmd.ActiveConnection = objCn
With objCmd
.CommandText = "SELECT*FROM 系统用户 WHERE 用户名 LIKE ?"
.CommandType = adCmdText
End With '为Command对象objCmd创建参数
Dim parm As New Parameter
Set parm = objCmd.CreateParameter("用户名", adVarChar, adParamInput, 10)
objCmd.Parameters.Append parm
Label4 = "" '清除标签4
End Sub
(五)连接数据库方式:
第一种,使用ADO connection对象,通过编写代码访问数据库。