· 数据库及信息管理 ······ 本栏目责任编辑:闻翔军
VB中数据库通用查询程序的设计
张捍 卫
(海军蚌埠士官学校,安徽 蚌埠 233012)
摘要:在
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
结构化查询语句的基础上,提出了在 VB中实现通用动态查询程序的原理j}口
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
,并给出了具体的程序代码。
关键词 :VB;数据库 ;查询
中图分类号:TP31 1 文献标识码:A 文章编号:1009—3044(2007)05—11204—02
Design of General Database Query Program in VB
ZHANG Han-wei
(Bengbu Naval Petry Officer Academy,Bengbu 23301 2,Chma)
Abstract:On the basis of an analysis of SQL,this paper presents the principle and method of general database dynamic query in the VB
The program code is pmvided as wel1.
Key words:VB;Database;Query
1引言
Visual Basic 6.0作为一种简捷 、系统的Windows应用程序开
发工具,具有强大的数据处理能力,被广泛应用于建立各种数据
库管理系统。数据库管理系统的最终 目的在于将经过加工的数据
以某种形式提供给用户。但用户的查询要求是不确定和变化的,
能否提供满足用户查询需求且查询效率高的人机交互接口是衡
量应用程序好坏的重要指标。在软件的生命周期中,由于用户需
求的变化以及产品升级的需要 ,弓l起数据库结构变化,使得原有
的查询语句和查询途径随之变化。通常的查询程序是量身订做
的,不具有通用性 ,在发生这种情况时,必须对原有的程序进行修
改,这将耗费大量的人力 、物力资源,给软件的维护和升级带来较
大的难度。因此,我们有必要在查询程序的设计上加以改进 ,使其
能适应用户不断变化的查询请求和数据库的变化。具有一定的通
⋯ — — 一
用性。 一
2实现原理
在关系数据库中,对数据库的各种操作是通过结构化查询语
言SQL进行的。查询是由SELECT语句完成的,其最基本和常用
的形式为:SELECT <字段名> FROM <
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
名>WHERE<查询条
件>。其中WHERE子句可以由多个谓词通过“and”(与)和“or”
(或)的逻辑关系组合在一起,任何复杂的查询都能由SELECT语
句将它表达出来。在VB中利用 ADO数据连接的 OpenSchema方
法获取数据库的数据表。并将其显示在数据列表框中,查询时,选
择要查询的数据表及要显示的字段名称,设置合适的查询条件 ,
最后生成结构化查询语句来实现对数据的查询。
3实现方法
3.1设计界 面
图 1 窗体界面设 计
在 VB的集成开发环境下添加一个窗体.并在窗体上放置 3
个组合框、2个列表桎 、1个文本框 、6个命令按钮、6个标签、1个
Adodcl控件。界面设计如图 1所示,控件属性设置如表 1。
表 1 主要控件属性设置及功能
3.2建立数据连接并初始化相关控件
为了实现数据库的通用查询,需在窗体加载(Load)事件中建
立 ADO数据库连接.并将数据库中的数据表名称添加到 lstTable
列表框。事件代码为:
Private Sub Form Load0
Dim rec As Recordset
Dim i,x,y As Integer
Dim cnn 1 As AD0DB.Connection
Dim rstSchema As AD0DB.Recordset
Dim strCnn As String
Set cnnl:New ADODB.Connection
strCnn=”Provider=Microsoft.Jet.OLE DB.4.O;Data Source=数据
库文件名称.mdb;Persist Security Info=False”
cnn1.Open strCnn
Set mtSchema=cnn1.OpenSchema(adSchemaTables、
Do Until mtSchema.E0F
If rstSchema!TABU J PE=”TABLE”Then
lstTables.Addltem mtSchema!TABLE NAME 向表
收稿 日期 :2007—01—17
作者简介:张捍卫(1966-),男,安徽桐城人,副教授,研究方向:计算机教学、数据库应用系统的分析和程序开发工作。
12O4 电麓知识与技术
维普资讯 http://www.cqvip.com
本栏目贲任编辑:闻翔军 ·。····数据库及信息管理 ·
名列表框添加数据表名
End If
rstSchema.M0veNext
Loop
rstSchema.Close
cnn1.Close
为运算符组合框添加运算符代码(略)
End Sub
使用时,应将上面“Data Source=数据库文件名称.mdb”中的
“数据库文件名称”替换为实际的 Access数据库所在的路径和文
件名。
3.3选取数据表和字段
运行时,表名列表框(1stTables)中将显示当前数据库中的数
据表名称,从中选择要查找的数据表。当选取一个数据表后,在
lstTables的 Click事件代码中,利用列表框的 Addhem方法将选定
的数据表包含的字段名称添加到字段名列表框(1stShowFields)及
组合框(cboField)中。这样在字段名列表框(1stShowFields)中可以
选择查询结果要显示的字段名 ,若不选取任何字段,查询结果将
显示该表中的所有字段信息。
3.4设置查询条件
一 个查询条件是由三部分组成的:<字段名> <操作符> <
值>。这三个部分可分别从“字段名称”、“运算符”和“值”三个组
合框中选取,当设置好一个条件后,按“加人条件框”命令按钮 ,将
其加入“条件框”中。“值”的形式是根据字段的类型而不同的,对
于数值型的字段,数字直接放在操作符的后面,文本型的字段则
要求表示值的字符用单引号括起来 ,而日期型的字段,在值的两
边要加上符号 #。
实际应用中,有时需要多个条件的组合查询。组合查询可以
是检索点之间相“与”的关系,也可以是相“或”的关系。因此 ,可点
击“与(And)”或“或(0r)”命令按钮,在条件框中加人“And”或‘'Or”
运算符。“加入条件框”及“与(And)”命令按钮部分代码如下。
Private Sub cmdAddTj—Click0 “加人条件框”命令按钮
代码
Dim nFldType As Integer
nndType=Adodc 1.Recordset.Fields(bField).Type
ⅡLen(txtTJ.Text1>0 Then
t)【tTJ.Text=戗tTJ.Text&vbCrLf
End If
IfnFldType=7 Then 字段类 型为 日期型
txtTJ.Text=txtTJ..Text& bField& ””& cboOperator.Text
& ”#”& cboValHe.Text& ”#”
ElseIf nFldType=202 Or nFldType=203 Then 字段类
型为文本型、备注型
If cboOperator.Text=”like”Then like运算符
txtTJ.Text=txtTJ.Text&bField& ””&cboOperator.Text& ”
%”& cboValHe.Text& ”% ”
Else
txtTJ.Text=txtTJ.Text& bField& ””& cboOperator.Text
& ” ”& cboValue.Text& ” ”
End IF
3.5生成 SQL语句
所有条件设置好后,可按“确定”命令按钮获取查询语句。当
然在这过程中,要对条件框中的条件进行一些处理,如去掉每行
后的回车换行符等,然后根据选择的表名、字段名及查询条件生
成 Select语句。部分代码如下:
Private Sub cmdOK
_ Click0
Dim i As Integer
Dim FieldName,TableName,sWhere As As String
Dim sTmp,sSQLString As String
生成WHERE后的条件表达式
If Len(txtTJ.Text)>0 Then
sWhere=LTrim(txtTJ.Text)
Fori=1 To Len(sWhere1 去掉 vbCrLf
If Mid(sWhere,i,1)=Chr(13)Then
sTrop=sTmp& ””
ElseIf Mid(sWhere,i,1)=Chr(1 o)Then
什么也不做
Else
sTmp=sTmp+Mid(sWhere,i,1)
EndⅡ
Next
sWhere=sTmp
swhere=RTrim(sWhere1
If Len(sWhere1>0 Then
sWhere=”Where”& sWhere
End If
End If
FieldName=Mid(FieldName,1,Len(FieldName)一1)
End If
For i=0 To lstTables.ListCount一 1 取得表名
If lstTables.Selected(i1 Then
TableName=TableName+(1stTables.List(i))&”,”
End If
Next
TableName=Mid(TableName,1,Len(TableName)一1) 去
掉末 尾的”.”
生成 SQL
sSQl_String=”Select”&FieldName& ”From ”&Table—
Name& sWhere
End Sub
这里 sSQLString变量中保存的信息就是查询的 SQL语句,将
它赋给数据控件,即可得到满足条件的记录信息。
4结束语
以上就数据库应用系统中使用频率最高的查询子系统,说明
了一种相对通用的动态查询程序的设计思路 ,具有较好的适应
性,它既适合 Access数据库 ,也适合 SQL Server数据库。在多个查
询系统的应用中,节省了开发时间,降低了维护费用,取得了较好
的效果。在此基础上稍加修改就可设计成一个通用的数据库查询
控件,能够根据查询的结果自动生成显示。
参考文献:
【1】裘旭光,刘晶.数据库系统原理与应用教程【M】.北京:清华大
学出版社,北方交通大学出版社,2003.
【2]胡荣根.Visual Basic 6.0中文版数据库和 Internet编程【M】.
北京:清华大学出版社,2000.
【3】蒋斌 ,欧阳柳波,杨超.Visual Basic 6.0程序设计【M】.北京:
电子工业 出版社 ,2001.
12O5
维普资讯 http://www.cqvip.com