【技术实现步骤摘要】
一种动态生成SQL语句的方法
[0001]本专利技术涉及数据存储
,具体涉及一种动态生成SQL语句的方法。
技术介绍
[0002]大量应用软件都使用关系型数据库存储结构化数据。应用软件一般使用SQL语句对存储在关系型数据库中的数据进行增、删、改、查等操作。因此,应用软件访问关系型数据库,大多需要首先生成SQL语句。
[0003]由于SQL语句往往与来源于用户和网络的外界数据变化有关,因此应用软件经常需要在运行时动态生成SQL语句。动态生成SQL语句一般有两种方法。一种是把字符串拼接在一起生成SQL语句,因拼接的字符串来源于外界,可能存在特殊字符,会导致拼接后的SQL语句产生意料之外的后果,严重者甚至会产生密码泄露或数据删除等风险,这就是“SQL注入”安全风险。另一种是采用“参数化SQL语句”的方法,这种方法避免了产生“SQL注入”的安全风险,但只能动态改变SQL语句的数据部分,不能改变SQL语句的其它部分,也不能改变其结构,因此灵活性较低,经常需要重复编写和调试相似的SQL语句,从而增加了工作量和出错概率。r/>
技术实现思路
<本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种动态生成SQL语句的方法,其特征在于,包括以下步骤:S1:建立SQL语句的扩展语句,形成DSQL语句,所述DSQL语句包括变量语法元素、变字语法元素和变块语法元素;所述变量语法元素为SQL语句中可变的字符串或数字类型的数据;所述变字语法元素为SQL语句中可变的字段名、函数名、操作符和关键字;所述变块语法元素为SQL语句中可重复或可去掉的部分;S2:采用解析器对DSQL语句进行解析,生成DSQL语句树,若DSQL语法树生成成功,则进入步骤S3;否则,进入报错程序,结束流程;S3:应用程序设置变块语法元素的重复次数;若在设置过程中发现变块语法元素不符合变块语法的要求,则进入报错程序,结束流程;否则进入步骤S4;S4:应用程序采用实际值设置变字语法元素;若在设置过程中发现变字语法元素不符合变字语法的要求,则进入报错程序,结束流程;否则进入步骤S5;S5:应用程序使用实际值设置变量语法元素;若在设置过程中发现变量语法元素不符合变量语法的要求,则进入报错程序,结束流程;否则进入步骤S6;S6:生成器将标准的SQL语句发送给关系型数据库。2.根据权利要求1所述的动态生成SQL语句的方法,其特征在于,所述变量语法元素的语句格式为:?[name1][:default1][/*comment1*/];其中,?为变量起始符号,name1为变量的名称,并为编程语言的合法标识符;default1为变量的默认值,且default1与其数据类型匹配;/*comment1*/为变量的注释,且为任意字符串。3.根据权利要求2所述的动态生成SQL语句的方法,其特征在于,所述变量语法元素在应用程序中引用的格式为:paraIndex1[name2|columnName_comparisonOperatorAbbreviation]其中:para为固定字符串;Index1为采用此种引用名格式的变量的序号,变量的序号从1开始编号;name2为明确指定的变量名;col...
【专利技术属性】
技术研发人员:徐凌云,
申请(专利权)人:成都航空职业技术学院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。