数据查询方法和装置制造方法及图纸

技术编号:10802672 阅读:67 留言:0更新日期:2014-12-24 10:07
本发明专利技术提供了一种数据查询方法和装置,其中,该方法包括:在接收的结构化查询语言SQL语句中携带变量名称时,获取用户根据变量名称输入的查询条件值;将变量名称与查询条件值进行绑定;预判SQL语句执行输出的查询结果的数据类型;根据预判的数据类型为SQL语句执行输出的查询结果分配数据存储变量数组;执行SQL语句,将查询结果存储在分配的数据存储变量数组中,将数据存储变量数组中存储的查询结果提供给应用程序。本发明专利技术解决了在查询条件不确定的情况下,无法采用绑定变量的SQL方式进行数据查询而导致的数据查询的安全性不高和系统数据处理效率低下的技术问题,达到了有效提高数据查询安全性和提高数据处理效率的技术效果。

【技术实现步骤摘要】
数据查询方法和装置
本专利技术涉及数据处理
,特别涉及一种数据查询方法和装置。
技术介绍
Oracle数据库是当前主流的数据库之一,目前,许多企业采用Oracle数据库进行企业数据的存储。在使用应用软件的过程中,经常需要进行灵活条件的查询,例如:一个查询可能存在多项查询条件,但并非所有的查询条件都是必要的,用户在使用的时候往往仅需要其中部分的查询条件就可以满足查询要求。因此,需要灵活的查询,以允许用户灵活把握查询的维度和粒度,从而更为方便快速地查询到用户所需的结果。对于上述的灵活查询,通常在JAVA中可以直接实现,然而出于对系统分层设计的考虑,浏览器/服务器模式(Browser/Server,BS)系统中通常将对数据库的访问采用存储过程的方式实现,即,所有的数据库逻辑都在存储过程中实现,JAVA程序在整个过程中只调用存储过程、传递输入参数、获取结果。然而,在实际使用的过程中,Oracle数据库的存储过程使用的过程化SQL(ProceduralLanguage/SQL,PL/SQL)语言中的本地动态结构化查询语言(StructuredQueryLanguage,SQL)在查询条件使用绑定变量时,只能支持固定的查询条件。如果查询条件不固定,但需要使用SQL,那么就需要使用非绑定变量的方式进行查询,然而,非绑定变量的SQL查询方式存在如下两个问题:1)会因为无法共享SQL而造成大量的硬解析,导致系统开销增大,处理效率下降;2)由于非绑定变量方式中直接将变量值写入SQL语句文本中,存在SQL引入问题,容易出现安全风险。因此,在查询条件不固定的情况下,如何使用绑定变量的方式进行SQL数据查询显得尤为重要。
技术实现思路
本专利技术实施例提供了一种数据查询方法,以达到在查询条件不固定的情况下采用绑定变量的SQL方式进行数据查询的目的,其中,该方法包括:在接收的结构化查询语言SQL语句中携带变量名称时,获取用户根据所述变量名称输入的查询条件值;将所述变量名称与所述查询条件值进行绑定;预判所述SQL语句执行输出的查询结果的数据类型;根据预判的数据类型为所述SQL语句执行输出的查询结果分配数据存储变量数组;执行所述SQL语句,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中;将所述数据存储变量数组中存储的查询结果提供给应用程序。在一个实施例中,根据预判的数据类型为所述SQL语句执行输出的查询结果分配数据存储变量数组,包括:在所述SQL语句执行输出的查询结果中包括多个输出字段时,确定所述多个输出字段中各个输出字段的数据类型,根据确定的数据类型为每个字段分别分配对应的数据存储变量数组中的元素。调用预定的绑定函数,将输出字段与数据存储变量数组中的元素进行一对一的绑定。在一个实施例中,执行所述SQL语句,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中,包括:为所述SQL语句分配游标;根据分配的游标,将所述SQL语句执行输出的查询结果逐一存储在分配的数据存储变量数组对应的元素中。在一个实施例中,在将所述数据存储变量数组中存储的查询结果提供给应用程序之后,所述方法还包括:释放为所述SQL语句分配的游标,和所述数据存储变量数组所占用的资源。在一个实施例中,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中,包括:设定游标在所述查询结果的第一条记录上,将所述第一条记录存储至所述数据存储变量数组中;移动游标至下一条记录上,确定是否存在记录;如果存在记录,则将当前的记录存储至所述数据存储变量数组对应的元素中,直至游标移动至最后一条记录。在一个实施例中,所述SQL语句中携带的变量名称,和用户输入的查询条件值是可变的。本专利技术实施例还提供了一种数据查询装置,以达到在查询条件不固定的情况下采用绑定变量的SQL方式进行数据查询的目的,其中,该装置包括:获取模块,用于在接收的结构化查询语言SQL语句中携带变量名称时,获取用户根据所述变量名称输入的查询条件值;绑定模块,用于将所述变量名称与所述查询条件值进行绑定;分配模块,用于预判所述SQL语句执行输出的查询结果的数据类型,并根据预判的数据类型为所述SQL语句执行输出的查询结果分配数据存储变量数组;执行模块,用于执行所述SQL语句,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中;提供模块,用于将所述数据存储变量数组中存储的查询结果提供给应用程序。在一个实施例中,所述分配模块包括:预判单元,用于预判所述SQL语句执行输出的查询结果的数据类型;元素分配单元,用于根据所述预判单元确定的数据类型为各个字段分别分配对应的数据存储变量数组中的元素;绑定单元,用于在根据确定的数据类型为每个字段分别分配对应的数据存储变量数组中的元素之后,调用预定的绑定函数,将输出字段与数据存储变量数组中的元素进行一对一的绑定。在一个实施例中,所述执行模块包括:游标分配单元,用于为所述SQL语句分配游标;存储单元,用于根据分配的游标,将所述SQL语句执行输出的查询结果逐一存储在分配的数据存储变量数组对应的元素中。在一个实施例中,上述装置还包括:释放模块,用于在所述提供单元将所述数据存储变量数组中存储的查询结果提供给应用程序之后,释放为所述SQL语句分配的游标,和所述数据存储变量数组所占用的资源。在一个实施例中,所述提供模块包括:设定单元,用于设定游标在所述查询结果的第一条记录上,将所述第一条记录存储至所述数据存储变量数组中;移动单元,移动游标至下一条记录上,确定是否存在记录;存储单元,用于在确定存在记录的情况下,将当前的记录存储至所述数据存储变量数组对应的元素中,直至游标移动至最后一条记录。在本专利技术实施例中,在上述实施例中,在确定接收到的SQL语句中携带有变量名称的情况下,获取用户根据该变量名称输入的查询条件值,将两者进行绑定,然后预判SQL语句执行输出的查询结果的数据类型,按照该数据类型为输出结果分配数据存储变量数组,最终执行SQL语句,将输出的查询结果存储至分配的数据存储变量数组中,以完成整个数据查询过程。通过上述方式,先对变量和变量值进行绑定,然后确定执行SQL语句后输出的查询结果的数据类型,以便为其分配合适的存储空间,从而实现了在查询条件不固定的情况下也可以采用绑定变量的SQL方式进行数据查询,解决了现有技术中在查询条件不确定的情况下,无法采用绑定变量的SQL方式进行数据查询而导致的数据查询的安全性不高的技术问题,达到了有效提高数据查询安全性的技术效果。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,并不构成对本专利技术的限定。在附图中:图1是本专利技术实施例的数据查询方法的方法流程图;图2是本专利技术实施例的基于Oracle数据库的数据查询装置的结构框图;图3是本专利技术实施例的查询单元的结构框图;图4是本专利技术实施例的应用程序端的数据处理单元的结构框图;图5是本专利技术实施例的基于Oracle数据库的数据查询方法的方法流程图;图6是本专利技术实施例的数据查询装置的结构框图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本专利技术做进一步详细说明。在此,本专利技术的示意性实施方式及其说明用于解释本专利技术,但并不作为对本专利技术的限本文档来自技高网
...
数据查询方法和装置

【技术保护点】
一种数据查询方法,其特征在于,包括:在接收的结构化查询语言SQL语句中携带变量名称时,获取用户根据所述变量名称输入的查询条件值;将所述变量名称与所述查询条件值进行绑定;预判所述SQL语句执行输出的查询结果的数据类型;根据预判的数据类型,为所述SQL语句执行输出的查询结果分配数据存储变量数组;执行所述SQL语句,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中;将所述数据存储变量数组中存储的查询结果提供给应用程序。

【技术特征摘要】
1.一种数据查询方法,其特征在于,包括:在接收的结构化查询语言SQL语句中携带变量名称时,获取用户根据所述变量名称输入的查询条件值;将所述变量名称与所述查询条件值进行绑定;预判所述SQL语句执行输出的查询结果的数据类型;根据预判的数据类型,为所述SQL语句执行输出的查询结果分配数据存储变量数组;执行所述SQL语句,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中;将所述数据存储变量数组中存储的查询结果提供给应用程序;其中,根据预判的数据类型,为所述SQL语句执行输出的查询结果分配数据存储变量数组,包括:在所述SQL语句执行输出的查询结果中包括多个输出字段时,确定所述多个输出字段中各个输出字段的数据类型,根据确定的数据类型为每个字段分别分配对应的数据存储变量数组中的元素;调用预定的绑定函数,将输出字段与数据存储变量数组中的元素进行一对一的绑定。2.如权利要求1所述的方法,其特征在于,执行所述SQL语句,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中,包括:为所述SQL语句分配游标;根据分配的游标,将所述SQL语句执行输出的查询结果逐一存储在分配的数据存储变量数组对应的元素中。3.如权利要求2所述的方法,其特征在于,在将所述数据存储变量数组中存储的查询结果提供给应用程序之后,所述方法还包括:释放为所述SQL语句分配的游标、和所述数据存储变量数组所占用的资源。4.如权利要求1所述的方法,其特征在于,将所述SQL语句执行输出的查询结果存储在分配的数据存储变量数组中,包括:设定游标在所述查询结果的第一条记录上,将所述第一条记录存储至所述数据存储变量数组中;移动游标至下一条记录上,确定是否存在记录;如果存在记录,则将当前的记录存储至所述数据存储变量数组对应的元素中,直至游标移动至最后一条记录。5.如权利要求1至4中任一项所述的方法,其特征在于,所述SQL语句中携带的变量名称,和用户...

【专利技术属性】
技术研发人员:黄坚戴明海
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:北京;11

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

1