一种通用查询条件生成算法的设计与实现.doc_第1页
一种通用查询条件生成算法的设计与实现.doc_第2页
一种通用查询条件生成算法的设计与实现.doc_第3页
一种通用查询条件生成算法的设计与实现.doc_第4页
一种通用查询条件生成算法的设计与实现.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一种通用查询条件生成算法的设计与实现 摘要:数据库管理信息系统中,查询统计是一项必不可少的需求。常用的多条件查询功能大多只能设置部分固定的条件字段,各个子系统也需要分别设计查询条件,在实际应用中存在一定的局限性。本文介绍了一种通用查询条件生成算法的主要思想,理论上能够利用任意数据表及字段设置查询条件,以组件的形式供各字系统调用。文章给出了具体的应用实例,并对如何改进完善进行了探讨。 关键词:通用 查询条件 算法 中图分类号:TP312 文献标识码:A 文章编号:1007-9416(2015)11-0000-00 在数据库管理信息系统中,查询统计是一项重要的功能需求。一般的单条件和多条件组合查询经常设置为几个固定字段,利用这几个固定字段的值来进行组合查询。在一些较复杂的管理系统中,存在很多业务子系统,每个子系统都有可能需要进行复杂的数据查询,如果分别设计实现,不仅工作量大,且容易出错;在需求变化时,程序的调整维护也很不方便。为解决此类问题,需要设计一个通用的查询条件生成器,并以组件的形式由各个子系统调用。 1 算法概述 算法以查询涉及到的单个或多个关联数据表中的字段及其实际值集为对象,配以语法规范的比较运算符、逻辑运算符,通过扫描用户选择或设定结果,自动分析、生成查询条件表达式。算法的总体设计思想如下: 1.1数据准备 数据字典:包含涉及查询条件的各数据表的字段名称、字段的中文说明、字段类型、字段长度等信息。 数据表tbCond:用于存放用户选择后的条件表达式中的各元素对象及相应的值,该表以DataGridView表格控件形式呈现。tbCond共有6个字段,均为Varchar类型,并以ComboBox控件实现绑定,供用户选择或输入。tbCond表结构如表1所示。 1.2用户选择条件 查询组件运行后,用户根据需求,在查询界面上的DataGridView表格控件中选择相关字段,选择或录入相应的条件值,自行设定条件组合。 1.3生成条件表达式 根据用户设定结果,扫描tbCond数据表,动态生成条件表达式。实现过程如下: 初始化字符串变量Condstring=,此变量用于存放生成的条件表达式; 选择tbCond表;指针移动到首记录; 循环 连接左括号:condstring=condstring+leftbrac; 连接表名.字段名:condstring=condstring+fieldname; 连接比较运算符:condstring=condstring+ compstring; 连接值串:condstring=condstring+valuestring 连接右括号:condstring=condstring+rightbrac; 连接逻辑运算符:condstring=condstring+ logstring; 指针下移一行; 是否到文件尾?若是,退出循环 经过以上处理步骤后,condstring变量中存放的就是最终生成的条件表达式代码。 2 通用条件生成器组件 根据上述思路,在.NET和SQL SERVER环境下设计并实现了通用查询条件生成器组件,如图1所示。 此窗体中,当用户逐行将查询条件设定完毕后,点击“生成语法”可自动生成SQL规范的条件表达式代码并显示在下方的textBox区域内。为了保证表达式语法的正确性,提供了语法检查功能,如果不正确,就会提示用户重新检查和修改条件。语法检查无误后,可将此表达式取名保存,供各子系统调用。 3 算法实现时的改进分析 本文中实现的通用查询条件生成器组件,应用到系统的多个模块,在字段级查询条件的自定义生成方面,均能较好地完成,但在生成某些条件组合时,虽然能够满足要求,使用起来却稍显繁琐。如,查询年龄区间在51至55岁的教授,虽然可以用“年龄=51 AND 年龄=55”两个表达式组合来实现,但如果利用SQL语言提供的Between运算符,用一个表达式就可以完成:“年龄 Between 51 And 55”,在进行列表选择时也只需一行。又如,若要筛选姓名为“张三”、“李四”、“王五”等多个名字的人员,如果用OR来对各表达式逐个进行连接,则显得太过麻烦,而如果利用SQL的IN运算符,也只需一个表达式就可满足要求:“姓名 IN (张三,李四,王五)。类似的问题还有查询某些代码字段的左边二位、右边一位或从第二位到第四位等涉及到字段内部结构的查询条件。 针对此类问题,我们可对前述的通用条件生成器稍加改进,主要思路是对算法支持的比较运算进行扩展,将SQL支持的各种运算符或运算函数添加至tbCond表的比较运算符compstring字段列表中,并且在具体实现时根据用户选择的运算符类别来临时弹出选择或输入表单界面,以供用户选择或输入valstring字段值。 4 结语 通用查询条件生成算法利用数据字典的字段信息生成选择列表,由用户自行选择或输入字段和条件值,然后与比较运算符、逻辑运算符连接,生成条件表达式,并使用左右括号来实现表达式的分层和嵌套,基本上能够生成任意字段级运算的条件表达式。本文中实现的通用条件生成器组件,在实际应用中也取

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论