现在的位置: 首页 > 综合 > 正文

VB6.0数据库开发之实例5总结

2012年10月06日 ⁄ 综合 ⁄ 共 1875字 ⁄ 字号 评论关闭
文章目录

    到今天为止,终于敲完红皮书中的第5个例子。这个例子敲的最长,特对此例子进行一下总结。实例5是“数据查询”。数据查询是一般的数据库管理系统的基本功能之一,用于从数据检索符合条件的数据。

先来上张图:


一、原理分析


        本例使用ADO Command对象创建参数查询,并用MSFlexGrid显示查询结果。因为Command对象查询返回的是行值非记录集。行值不支持标签,因此不能将其作为数据绑定的数据源。显示查询结果常用MSFlexGrid控件,通过代码将数据填充至控件中进行显示。


二、技术要领


1. Command


1) 创建对象

创建Command对象使用?作为Select语句中的查询参数

举例:

CommandText = "SELECT * FROM 系统用户 WHERE 用户名 LIKE ? AND 身份 LIKE ?"

2) 创建参数

使用Command对象CreateParameter方法创建参数对象,将其添加到Command对象的Parameter集合中

举例:

Dim Parm As New Parameter
Set Parm = objCmd.CreateParameter("用户名", adVarChar, adParamInput, 10)
objCmd.Parameters.Append Parm

3)设置参数

设置查询对数的值

举例:

objCmd("用户名") = "%" & txtUser & "%"

4) 执行查询

执行Command对象的Execute方法完成查询

举例:

Set objRs = objCmd.Execute()	 '执行查询,获得查询结果记录集

2. MSFlexGrid


1) 属性

    • Cols——设置或返回控件的列数
    • Rows——设置或返回控件的行数
    • TextMatrix——设置和返回控件任意单元格的文本内容

举例:把objRs的字段名添加到MSFlexGrid的首行

代码:

For i = 0 To objRs.Fields.Count - 1
    MSFlexGrid1.TextMatrix(0, i) = objRs.Fields(i).Name
Next

2)方法

    • AddItem——用于向控件添加一行数据

格式:object.AddItem(string[,index])

说明:String为所要添加数据的字符串

 Index为新增加行在控件中的位置,第一行为0、第二行1、……,如果省略,默认添加在最后 一行

    • Clear——用于清除所有数据

格式:object.Clear

    • RemoveItem——用来清除指定的行

格式:object.RemoveItem(index)

三、窗体设计



四、代码过程


具体代码就不写在此了,只列出思路。

1. Form_Load

    • 建立数据库连接
    • 创建Command对象objCmd
    • 为ojbCmd创建参数

2. cmdQuery_Click

    • 设置查询参数
    • 执行查询
    • 显示结果
      • 列名
      • 行值
      • 记录条数

3. Form_Unload

    • 关闭数据库连接
    • 释放对象


五、所遇问题


1.自己马虎产生的问题:

1) 数据源字符串中少写了“Provider=”出现如下错误:

2) 为Command对象objCmd创建参数的代码里,名为“身份”的参数对象写成了和另一个参数对象“用户名”同名了。代码如下: 

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

结果输入信息,点查询时出现错误,如下图:


大意失荆州,细节决定成败,然也。做为自己的一个警钟,以后多加注意!


2.系统缺陷


1) 输入查询信息,点查询按钮,显示结果从第三行开始,而不是第二行。如图:

解决方法:MSFlexGrid的Rows的属性默认为2,在属性窗口中将属性值改为1即可解决。因此改为n,从n+1行开始显示。(注意:不能改为0,否则点查询时,会产生如下错误提示:)

2) 当继续点查询按键时,新数据会在原先显示的数据之后显示;……。共点击4次的效果图如下:

解决方法:在查询过程中,先设置MSFlexGrid1.Rows = 1。同时上面的那个问题也能解决。(之前,也用过Clear方法,虽然表里的数据会被清除,但表格不会被删除,即在原来空表格的下面继续显示。点击了4次的效果图如下:)


六、心得总结


千言万语,总之一句话:千淘万漉虽辛苦,吹尽狂沙始到金。话可能过,但理是真的。


抱歉!评论已关闭.