【VB开源代码栏目提醒】:以下是网学会员为您推荐的VB开源代码-【推荐】-》基于VB程序和SQLServer数据库的多条件模糊查询的实现 - 综合课件,希望本篇文章对您学习有所帮助。
本栏目责任编辑闻翔军数据库与信息管理ComputerKnowledgeandTechnology电脑知识与技术第5卷第35期2009年12月基于
VB程序和SQLerver数据库的多条件模糊查询的实现王大龙大连9150部队94分队辽宁大连16023摘要当今时代是飞速发展的信息时代在各行各业中离不开信息处理这正是计算机被广泛应用于信息管理系统原因。
VB和SQLerver分别是微软公司推出的面向对象的程序设计语言和大型数据库管理系统具有广大的用户群二者的接合可开发出功能强大的C/应用程序。
该文就在V中访问QLerver数据库的实现多条件模糊查询进行了讨论主要介绍在数据库
管理系统中实现多条件模糊查询的方法与技巧。
关键词数据库多条件模糊查询中图分类号TP311文献标识码A文章编号1009-3044200935-9904-03BasedonVBProgramsandSQLServerDatabaseMulti-conditionoftheRealizationofFuzzyQueryWANGDa-longDalian91550units94unitsDalian116023ChinaAbstract:Thepresenteraistherapiddevelopmentoftheinformationageinformationprocessinginallwalksoflifecannotbeseparatedwhichiswidelyusedincomputerinformationmanagementsystemforthereasons.VandLerverareMicrosoftsobject-orientedpro-gramminglanguagesandlargedatabasemanagementsystemswithlargeuserbasebothofthejointscanbedevelopedapowerfulC/appli-cations.ThisaccessQLerverinVdatabasemulti-fuzzyqueryconditionswerediscussedmainlyintroducedinthedatabasemanagementsystemmulti-conditionsmethodsandtechniquesfuzzyqueries.Key
words:databasemulti-conditionfuzzyquery1数据库概述及应用数据库概述数据库应用系统开发的目标是建立一个满足拥护长期需要的产品。
开发的主要过程为理解用户需求然后把它们转变为有效的数据库设计。
把设计转变为实际的数据库并且这些数据库带有功能完备、高效能的应用。
数据库技术在计算机
软件领域研究中一直是非常重要的主题产生于2世纪60年代30多年来数据库技术得到了迅速发展并已经成较为完整的理论体系和一大批实用系统。
数据库系统数据库系统本质上是一个用计算机存储查询记录的系统。
数据库本身可被看作为一种电子文件柜也就是说它是收集
计算机数据文件的仓库或容器。
系统用户可以对这些文件执行插入数据、检索数据、更改数据、删除数据等一系列操作。
数据库系统是一个计算机存储记录的系统即它是一个计算机系统该系统的目标存储信息并支持用户检索和更新所需要的信息。
2
VB简要概述VisualBasic是Microsoft公司在1991年推出的用于开发Windows应用程序的开发工具是基于DOS平台下Basic编程语言的可视化的程序设计语言。
它继承了Basic所具有的程序
设计语言简单易用的特点同时在其编程系统中采用了面向对象、事件驱动的编程机制开创了可视化编程的一代先河。
Visual是可视化的意思VisualBasic的命名就表示它是一套可视化的程序开发工具。
在设计过程中可以用可视化的方法编排一个窗口
程序在执行时的外观同时也可以采用易学易懂的Basic语言并且把界面操作的细节部分事先封装起来使得初学程序设计的人也可以轻而易举的编写出想象的程序。
通过
VB实现对数据库的一些功能有数据和数据说明的醒目显示匹配查询、模糊查询。
3
VB访问SQLServer数据模糊查询方法在进行数据库查询时有完整查询和模糊查询之分。
一般模糊语句如下SELECT字段FROM表WHERE某字段Like条件其中关于条件SQL提供了四种匹配模式表示任意个或多个字符。
可匹配任意类型和长度的字符有些情况下若是中文请使用两个百分号表示。
收稿日期2009-10-24作者简介王大龙1978男辽宁辽阳人工程师研究方向数据处理。
ISSN1009-3044CoputerKnowledgeandTechnology电脑知识与技术Vol.No3December29pp994-996E-mail:jsltccccnetcnhttp://wwwdnzsnetcnTel:86--69963699649904数据库与信息管理本栏目责任编辑闻翔军ComputerKnowledgeandTechnology电脑知识与技术第5卷第35期2009年12月比如SELECTFROMuserWHREu_nameIK三将会把u_name为“张三”“张猫三”、“三脚猫”“唐三藏”等等有“三”的记录全找出来。
另外如果需要找出u_name中既有“三”又有“猫”的记录请使用and条件SEECTFROMuserWHEREu_nameIKE三ANDu_nameLK猫若使用SCTROMuserWRu_nameIK三猫虽然能搜索出“三脚猫”但不能
搜索出符合条件的“张猫三”。
2_表示任意单个字符。
匹配单个任意字符它
常用来限制表达式的字符长度语句比如SCTROMuserWHRu_nameIK_三_只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的再比如SCTROMuserWHRu_nameIK三__只找出“三脚猫”这样name为三个字且第一个字是“三”的3表示括号内所列字符中的一个类似正则表达式。
指定一个字符、字符串或范围要求所匹配对象为它们中的任一个。
比如SCTFROMuserWHRu_nameIK张李王三将找出“张三”、“李三”、“王三”而不是“张李王三”如内有一系列字符01234、abcde之类的则可略写为“0-4”、“a-e”SCTROMuserWRu_nameK老1-9将找出“老1”、“老2”、……、“老9”4表示不在括号所列之内的单个字符。
其取值和相同但它要求所匹配对象为指定字符以外的任一个字符。
比如SCTROMuserWRu_nameK张李王三将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等SCTROMuserWRu_nameK老1-4将排除“老1”到“老4”寻找“老5”、“老6”、……5查询内容包含通配符时由于通配符的缘故导致我们查询特殊字符“”、“_”、“”的语句无法正常实现而把特殊字符用“”括起便可正常查询。
据此我们写出以下函数functionsqlencodestrstrreplacestr此句一定要在最前strreplacestr__strreplacestr
sqlencodestrendfunction在查询前将待查字符串先经该函数处理即可。
①利用比较操作符进行模糊查询先把STXACT的设置置为O这时用于两个字符表达式之间作比较其规则是右边的字符逐个与左边相同位置的字符进行比较只要遇到其中一个字符不相等或者右边的字符表达式结束比较操作就结束。
所以abcabcabcabab_abab的比较结果均为逻辑真.T.。
可见这种方法的模糊性是不能令人满意的。
②利用进行包含比较其模糊查询的效果就比用时好得多这种方法是在右边的字符表达式中查找左边的字符表达式若找到返回逻辑真.T.否则返回逻辑假..。
用这种方法只要左边的字符表达式的每一个字符在右边的字符表达式中存在且位置不间断查找就能成功。
由此可见直接利用和进行比较操作是不能太模糊的。
4缩略语或多条件的模糊查询方法通常缩略语或简称是由全称中的某些排列位置不连续的字符组成的因此通过设置不同长度的字符串进行比较的规则或者利用包含比较符是不能对缩略语或简称进行模糊查询的。
这时可编写一通用的自定义函数将用户输入的查询条件与字符型字段变量进行逐字比较如果是的缩略语或简称则返回逻辑真.T.否则返回逻辑假..从而实现多条件的模糊
查询。
下面所编写的自定义函数以供参考。
设计思想此函数必须是一个通用
代码。
为此执行时可先接受二个参数和。
从的左边开始取其第一、二个字符X1用AT函数测试X1在中的位置S1如果S1不为0就将中包含X1以及左边部分的字符截掉并取中的第三、四个字符X2用AT函数测试X2在的剩余部分中的位置S2若S2不为0就将的剩余部分中包含X2以及左边部分的字符截掉……直到将中的字符取完并在中测试完为止最后本函数返回逻辑真.T.。
在这个过程中只要有一次测试不成功即Sn0则退出本函数并返回逻辑假..。
因为一个汉字占二个ASCII字符所以每次取二个相邻字符进行测试让ZBJ.PRG中的K2。
这样做一是可以减少测试比较的次数提高程序运行速度。
二是当中含有数字、字母等半角字符时可以减少满足条件的记录数目提高查询的命中率。
然而若查询条件中含有英文缩写则每次只能取一个ASCII字符进行测试多条件模糊查询的通用
代码str_query1selectfromtable9905本栏目责任编辑闻翔军数据库与信息管理ComputerKnowledgeandTechnology电脑知识与技术第5卷第35期2009年12月stringkey1stringkey2stringkey3stringkey4/有几个条件就加几个key我这里有四个iftextBox1.Text.Trimkey1column1liketextBox1.Text.TrimiftextBox2.Text.Trimkey2column2liketextBox2.Text.TrimiftextBox3.Text.Trimkey3column3liketextBox3.Text.TrimiftextBox4.Text.Trimkey4column4liketextBox4.Text.Trimifkey1key2key3key4str_query1selectfromtablewhereifkey1这些条件是个递增的过程有几个条件就加几个if语句str_query1key1ifkey1key2str_query1andkey2elsestr_query1key2ifkey1key2key3tr_query1andkey3elsestr_query1key3ifkey1key2key3key4str_query1andkey4elsestr_query1key4上面这些
代码的主要核心是但有一个条件不为空时肯定会有查询语句加上where然后当前n-1个条件有一个不为空时肯定要在keyN之前加上and这一点相信大家都知道否则的话就是前n-1个条件都为空那么直接查询语句直接加keyN就行了因为前面没有条件所以不用加and了就这样依次类推可以逐渐的把查询条件增加又不会让
代码的可读性下降当然了这个可以任意的添加修改key的数目非常容易。
通过上面介绍的
代码实现了真正的多条件模糊查询然而令人遗憾的是它的速度表现总使人感到美中不足幸好在
vb中引入了结构化查询语言SELECT-SQL。
5利用
vb中SELECT-SQL语句的模糊查询方法利用SQL的SELECT语句可以非常方便、极其快速地进行十分复杂的查询操作。
特别值得推荐的是ELECT-SQL语句中的WHERE参数支持通配符百分符号和_下划线符号因此对于查询条件为缩略语或简称的情况可以非常简单地实现真正的模糊查询。
这里百分符号代表0个或0个以上的任意字符下划线符号_代表1个任意字符它们只能与运算符LIKE搭配使用。
例如设内存变量m.field其值为用户输入的用户名称的简称如京师专现在要在KTJBK.DBF中查询用户名称字段名为北京师范高等专科学校或为北京师专或为京师专的全部记录可以用下面的一段程序实现m.field京师专mc_cxtjFORi1TOLENALLTRIMm.fieldSTEP2mc_cxtjmc_cxtjSUBSTRALLTRIMm.fieldi2ENDFORSELECTFROMKTJBKWHEREKTJBK.用户名称LIKEmc_cxtjINTOCURSORTEMP利用
VB中的结构化查询语言SELECT-SQL可以编写出很漂亮的通用查询程序。
在数据库管理系统的开发实践中用
VB的屏幕生成器编写过一通用查询程序其库的通用性和执行速度表现都非常好。
6总结在数据库管理系统中
vb访问SQL实现查询是一个很重要的内容。
然而在多数情况下人们不能准确知道作为查询条件的字段内容为保证能查到满足条件的数据记录进行多条件的模糊查询能达到很好的效果。
参考文献1崔德友刘卉媚朱小平.在
VB应用程序中访问SQLServer数据库的实现方法J.吉林广播电视大学学报20034.2朱可云.多条件模糊查询的实现J.信息工程学院学报19993.3谢红李江华解武等.基于
VB程序和SQLServer数据库的多条件模糊查询的实现J.应用科技2003309.9906