一种数据库查询语句的转换方法和转换系统技术方案

技术编号:3874961 阅读:683 留言:0更新日期:2012-04-11 18:40
本发明专利技术一种数据库查询语句的转换方法和转换系统,用户进行库表及字段的设置后,在前台选择所需的数据库表名称、该数据库表的字段,根据业务需要输入自定义的查询语句,将用户输入的语句进行语法解析验证,一次扫描查询语句即可完成解析;将业务化的中文查询语句转化成业务系统所需要的标准英文SQL查询语句,本发明专利技术提供了将业务化数据库查询语句转化成标准的可执行SQL语句的功能,业务系统可获取此语句直接在系统中使用;普通用户在不掌握数据库查询工具和SQL语法等专业技术的情况下,可以灵活、自由地使用数据库。

【技术实现步骤摘要】

本专利技术涉及一种数据库查询语句的转换方法和转换系统
技术介绍
目前大型的软件应用系统中,经常需要把程序和数据库结合起来进行使用。这些 数据库的查询可以通过软件应用系统所提供的查询功能,也可以通过数据库产商提供的数 据库工具进行。由于软件应用系统中提供的查询功能都是预先设计好的,使用者需要进行 新的查询时,只能通过升级系统来实现,时间上存在滞后,且依然无法满足将来可能的新需 求。通过数据库工具进行查询可以满足使用者随时新增加的查询需求,但是若使用者不能 熟练掌握数据库工具和熟悉SQL(结构化查询语言)语法(通常为英文),就不能灵活、自由 地查询数据库,造成使用上的不便。
技术实现思路
本专利技术的目的在于提供一种面向普通用户,使之在不掌握数据库查询工具和SQL 语法等专业技术的情况下,将用户输入的查询指令转换成数据库能执行的查询语句的方法 和系统。—种数据库查询语句的转换方法,包括以下几个步骤 步骤1、根据业务系统的英文库表名称设置对应的业务化中文库表名称和标准字 段表、业务化中文库表或帐表名称及对应的辅助信息、以及标准字段信息; 步骤2、编译器对数据库查询语句作词法和语法分析后进行语法验证 用户在前台选择所需的数据库表名称和该数据库表的字段,根据业务需要输入自 定义的数据库查询语句,编译器在接收到数据库查询语句后,首先对数据库查询语句进行 扫描,阅读查询语句执行词法分析的过程,并将字节流序列转成编译器可识别的记号流;所 述的语法分析程序从扫描程序中获取记号流形式的源代码,根据语法定义中的规则对数据 库查询语句进行语法分析; 经过对数据库查询语句进行词法和语法分析后,如果发现此语句错误,则发送语 法验证错误信息,并提供较为准确的错误提示;如果验证正确,表示此数据库查询语句的语 法是正确的,则编译器将构造和遍历符合该语句的一棵抽象语法树,并根据需要提取相关 的节点信息,组成了编译器模型对象,发送验证成功信息,语法验证结束; 步骤3、翻译数据库查询语句及获取业务数据 接收到语法验证成功信息后,该编译器模型对象负责接收翻译器传回的业务数 据,并进行翻译操作;所述的翻译器提供了与业务系统数据库查询语句的各种交互动作,该 翻译器负责接收业务系统的表名、字段名等信息及相关业务数据内容的处理,将编译器所 需的数据传给编译器模型对象,并将结果传回给业务系统,供业务系统提取使用,完成对业 务数据的中转控制与处理。 —种数据库查询语句的转换系统,主要包括翻译器和编译器两大部分,所述的翻译器提供了与业务系统查询语句的各种交互动作和与编译器的数据处理功能,翻译器负责 接收业务系统的表名、字段名等信息及相关业务数据内容的处理,将编译器所需的数据传 给编译器模型对象,并将结果传回给业务系3,供业务系统提取使用,完成对业务数据的中 转控制与处理;该编译器负责语法验证及数据处理等的核心工作;所述编译器的模型对象 用来构造编译器模型对象基类,用于进行数据库查询语句的公共处理及存储编译器语法解 析后遍历语法树时的节点信息内容,通过此模型对象将内容传给翻译器,由翻译器负责与 业务系统进行交互。 所述的查询语句包括常规语句、追加语句、比较语句、循环语句和自定义查询语 句。 所述的翻译器主要包括 查询语句接收模块110 :用于接收业务系统传入的数据库查询语句,并传给编译 器进行解析验证; 库表信息设置模块111及字段信息设置模块112 :用于根据编译器获取的库表中 文名称,接收业务系统的库表英文名称、字段中英文名称及用来临时存储业务相关数据的 辅助信息,并将这些内容传回编译器进行处理; 各别名信息设置模块113 :用于根据编译器获取的别名信息,接收对应的英文别 名并传回编译器; 循环变量值设置模块114 :用于根据编译器获取的循环变量,接收业务系统的循 环变量的值并传回编译器进行处理; 查询语句翻译模块115 :用于将业务化中文数据库查询语句交给编译器处理,翻 译成标准英文查询语句,并将包括空查询语句、空执行语句、完整执行语句的各种结果发送 给业务系统; 查询语句转XML格式模块116 :用于处理业务系统数据,并将数据库查询语句转成 XML格式,将内容转存到业务系统数据库,方便业务系统的操作; XML格式转查询语句模块117 :用于将业务系统数据库中已有的XML格式的内容转 成转换系统可识别的数据库查询语句及其他数据,达到业务处理的定位功能; 编译器模型对象获取模块118 :用于实现与编译器各模型对象的获取,并进行交 互操作; 验证错误信息获取模块119 :用于获取编译器语法验证错误信息,并将该错误信 息发送给业务系统; 查询语句格式化处理模块120 :用于通过编译器进行数据库查询语句的格式化处 理; 各子句内容获取模块121 :用于通过对编译器各模型对象处理,获取各子句的内 容,方便业务系统提取; 循环变量获取模块122和各别名信息获取模块124 :用于获取编译器的循环变量、表别名、字段别名等信息。所述的编译器主要包括 词法、语法和语法树分析模块21 :用于对翻译器传回的查询语句进行验证解析工 作,接收业务化的查询语句,进行词法分析、语法分析、语法树的分析; 语句模型构造模块22:用于根据业务系统的查询语句的类型,构造常规模型对 象、表合并模型对象、表比较模型对象三种类型中对应的模型对象; 语句遍历模块23 :用于构造编译器模型对象基类,进行查询语句的公共处理及存 储遍历语法树过程中所获取的相关语法树的节点信息; 子句构造模块24 :用于设计各类子句模型对象,获取各子句下的内容项; 子句表、字段内容模块25 :用于设计表单模型对象、字段模型对象,可存储数据库表的中英文信息、字段的中英文信息,方便编译器的表、字段的中英文翻译及格式化操作;构造表别名、字段别名、排序别名对象,实现各种别名信息的获取。 本专利技术一种数据库查询语句的转换方法和转换系统中应用了 ANTLR元语言技术 工具( 一种语言识别工具),使用BNF巴科斯范式(Backus-Naur Form)进行语法定义,采用 基于LL(K)的文法编译原理技术实现的,实现了数据库查询语句的灵活查询及强大语法验 证功能,可以准确地分析复杂的语法,并能根据数据库查询语句对应的数据库表、标准字段 表等信息将业务化的中文查询语句翻译成业务系统(数据库)可执行的标准的SQL语句, 供业务系统提取使用。本专利技术支持常规语句、追加语句、比较语句、循环语句、自定义语句等 常用的五种查询语句。 本专利技术用于辅助业务系统进行数据库查询语句的语法解析验证、查询语句的翻译 及语句的相关业务数据提取,提供了与业务系统无关性的接口,任何系统均可与本接口进 行无缝连接。附图说明 图1为本专利技术中数据库查询语句验证过程流程图; 图2为本专利技术中数据库查询语句语法验证成功后生成的抽象语法树; 图3为本专利技术中数据库查询语句翻译及数据获取的业务流程图; 图4为基于本专利技术的系统逻辑架构图; 图5为基于本专利技术的系统构架图; 图6为本专利技术中翻译器的框架示意图; 图7为本专利技术中编译器的框架示意图。 以下结合附图和具体实施方式对本专利技术作进一步详述。具体实施例方式本专利技术适用于基于J2EE架构技术平台的审计系统或业务系统,需依赖于工具本文档来自技高网...

【技术保护点】
一种数据库查询语句的转换方法,其特征在于包括以下几个步骤:步骤1、根据业务系统的英文库表名称设置对应的业务化中文库表名称和标准字段表、业务化中文库表或帐表名称及对应的辅助信息、以及标准字段信息;步骤2、编译器对数据库查询语句作词法和语法分析后进行语法验证用户在前台选择所需的数据库表名称和该数据库表的字段,根据业务需要输入自定义的数据库查询语句,编译器在接收到数据库查询语句后,首先对数据库查询语句进行扫描,阅读查询语句执行词法分析的过程,并将字节流序列转成编译器可识别的记号流;所述的语法分析程序从扫描程序中获取记号流形式的源代码,根据语法定义中的规则对数据库查询语句进行语法分析;经过对数据库查询语句进行词法和语法分析后,如果发现此语句错误,则发送语法验证错误信息,并提供较为准确的错误提示;如果验证正确,表示此数据库查询语句的语法是正确的,则编译器将构造和遍历符合该语句的一棵抽象语法树,并根据需要提取相关的节点信息,组成了编译器模型对象,发送验证成功信息,语法验证结束;步骤3、翻译数据库查询语句及获取业务数据接收到语法验证成功信息后,该编译器模型对象负责接收翻译器传回的业务数据,并进行翻译操作;所述的翻译器提供了与业务系统数据库查询语句的各种交互动作,该翻译器负责接收业务系统的表名、字段名等信息及相关业务数据内容的处理,将编译器所需的数据传给编译器模型对象,并将结果传回给业务系统,供业务系统提取使用,完成对业务数据的中转控制与处理。...

【技术特征摘要】

【专利技术属性】
技术研发人员:贾晓工刘荣黄建德
申请(专利权)人:厦门东南融通系统工程有限公司
类型:发明
国别省市:92[中国|厦门]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1