CN101145162A - 一种数据库动态查询的方法和系统 - Google Patents

一种数据库动态查询的方法和系统 Download PDF

Info

Publication number
CN101145162A
CN101145162A CNA200710166023XA CN200710166023A CN101145162A CN 101145162 A CN101145162 A CN 101145162A CN A200710166023X A CNA200710166023X A CN A200710166023XA CN 200710166023 A CN200710166023 A CN 200710166023A CN 101145162 A CN101145162 A CN 101145162A
Authority
CN
China
Prior art keywords
inquiry
query
metadata
description
subobject
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA200710166023XA
Other languages
English (en)
Other versions
CN100568244C (zh
Inventor
张俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kingdee Software China Co Ltd
Original Assignee
Kingdee Software China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kingdee Software China Co Ltd filed Critical Kingdee Software China Co Ltd
Priority to CNB200710166023XA priority Critical patent/CN100568244C/zh
Publication of CN101145162A publication Critical patent/CN101145162A/zh
Application granted granted Critical
Publication of CN100568244C publication Critical patent/CN100568244C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种数据库动态查询的方法,包括:依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于查询子对象的描述;依据所获取的元数据信息,生成查询对象;调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;依据查询对象及其参数修改信息,生成SQL查询语句;执行所述SQL查询语句,完成数据库查询,返回数据结果集。本发明可以通过在运行时传入过滤参数等来实现不同的查询,能够满足纷繁复杂的查询需求;并显著降低应用程序维护的复杂度,提高查询机制的适应性和效率。

Description

一种数据库动态查询的方法和系统
技术领域
本发明涉及数据库应用领域,特别是涉及一种数据库动态查询的方法和系统。
背景技术
在目前的很多软件应用系统(例如,J2EE企业应用等)中,经常需要把程序和数据库结合起来进行使用,即经常面临访问数据库的问题,而数据库查询则是最常用的一个操作。并且,由于企业应用中业务的复杂性和多变性,数据库查询是使用频率非常高的功能模块,导致对数据查询模块的性能、健壮性和扩展性要求比较高。
现有技术中,一般采用JDBC(Java Database Connectivity)API通过编程实现数据库查询功能模块。JDBC API是Java语言访问数据库的一种规范,一套Java数据库的编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。比如建立数据库连接、执行SQL语句进行数据的存取操作等。但是这种编程比较低级,导致工作量大,并且容易出错;其次,由于编程代码量过多,还导致了应用程序代码和数据访问代码之间的依赖过多,代码的适应性和可扩展性较差,不利于维护。这些缺陷都难以满足目前数据库查询访问的需求,导致效率较低。
现有技术还经常使用数据库视图技术来解决上述问题。视图具有以下特点:
A、一些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件,简化了用户对数据的理解,也可以简化他们的操作。
B、通过视图用户只能查询和修改他们所能见到的数据,数据库中的其它数据则既看不见也取不到;即可以保证数据安全性。
C、使用数据库视图技术后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来,即视图可以使应用程序和数据库表在一定程度上独立。
但是数据库视图技术仍然存在一些不可接受的缺陷:
1、数据库视图技术只能按照SQL编写逻辑,没有面向对象的编程接口,不利于用户理解,不能够方便的设置条件参数。
2、视图定义完成后,不能在运行期动态修改。而由于大型数据库应用程序中经常需要使用到非常多的数据库查询方式,业务复杂且随着业务的扩展而较多变化,这么多的查询语句定义和维护工作量都很大;而且无论在设计期定义多少种查询方式,都不可能把未来所有的查询方式穷举并定义出来,因此如果外部环境出现新的变化时,而视图又不能动态修改,则应用程序难以适应查询需求的变化。
3、视图适应能力差,工作效率低下,不易于维护;一般视图需要每次把可能用到的所有字段都查询出来,这样导致查询数据量倍增,运行效率低;反之如果只查特定场景所需字段则通用性不佳,需要针对每一种场景分别设计视图,导致维护工作量大量增加。当系统中的数据表关系发生变化,或者查询需求发生变化时,所有相关的视图都需要修改,出错机率较大。
4、视图在整个应用层共享,不能实现会话级隔离,有可能导致各个会话之间的相互影响。
总之,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够创新的提出一种数据库查询机制,可以非常方便的应对复杂多变的数据库查询,并能够实现会话级的隔离,以提高用户查询数据库的效率。
发明内容
本发明所要解决的技术问题是提供一种数据库查询的方法和装置,可以非常方便的在运行期对查询依据进行修改,并能够实现会话级的隔离,以提高用户查询数据库的效率。
为了解决上述问题,本发明公开了一种数据库动态查询的方法,包括:依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于查询子对象的描述;依据所获取的元数据信息,生成查询对象;调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;依据查询对象及其参数修改信息,生成SQL查询语句;执行所述SQL查询语句,完成数据库查询,返回数据结果集。
优选的,所述预置的元数据关于查询子对象的描述中还可以包括:关于多个查询子对象关系的描述。
优选的,所述调用参数接口对查询子对象进行修改的内容还可以包括:修改多个查询子对象的关系。
优选的,所述动态查询方法还可以包括:将直接依据查询获取的元数据信息而生成的查询对象置于缓存中,并复制生成一新的查询对象实例返回给调用者使用。
优选的,所述动态查询方法还可以包括:当前调用者使用的查询结束后,销毁该用户使用的查询对象实例。
依据本发明的另一优选实施例,还公开了一种数据库动态查询的装置,包括以下部件:
元数据查找模块,用于依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于查询子对象的描述;
查询对象生成模块,用于依据所获取的元数据信息,生成查询对象;
参数修改模块,用于调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;
SQL查询语句生成模块,用于依据查询对象及其参数修改信息,生成SQL查询语句;
查询执行模块,用于执行所述SQL查询语句,完成数据库查询,返回数据结果集。
优选的,所述预置的元数据关于查询子对象的描述中还包括:关于多个查询子对象关系的描述。
优选的,所述参数修改模块对查询子对象进行修改的内容还包括:修改多个查询子对象的关系。
优选的,所述动态查询装置还可以包括:查询对象实例创建模块,用于将所述查询对象生成模块得到的查询对象置于缓存中,并复制生成一新的查询对象实例返回给调用者使用。
优选的,所述动态查询装置还可以包括:查询对象实例销毁模块,用于当前调用者使用的查询结束后,销毁该用户使用的查询对象实例。
与现有技术相比,本发明具有以下优点:
为了解决查询方式多的问题,本发明提供了一种解决途径,应用程序可以把各种查询方式分门别类定义成QUERY元数据,在运行时传入过滤参数等来实现不同的查询,这样大大减少了查询语句的数量,但是还能够满足纷繁复杂的查询需求;而且使用面向对象的方式编码也更方便。
同时本发明提供的设计思想及管理方式则可以很好地解决查询需求变化的问题,动态QUERY在运行期可以动态改变QUERY对象内部结构,包括查询哪些字段、关联哪些数据库表、以及使用哪些过滤条件等,从而改变最终查询方式,这样一来显著地降低了应用程序维护的复杂度,能够大幅度的提高查询机制的适应性和效率。
附图说明
图1是本发明一种数据库动态查询的方法实施例的步骤流程图;
图2是本发明一种数据库动态查询的装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本发明中的“对象”一词属于本领域的通用术语,在本说明书中就不对其进行详细解释了。一般的,在Java中,一个类,一个方法,一个变量都可以作为对象,其中,有些对象可以直接去用(比如基本变量类型,或一些静态的类、方法、变量等),而有些对象不可以直接去用,需要创建这个对象的实例(这样,既能实现对象的功能,又不会直接破坏对象的构造)。
参照图1,示出了本发明一种数据库动态查询的方法实施例,可以包括:
步骤101、依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于查询子对象的描述;
步骤102、依据所获取的元数据信息,生成查询对象;
步骤103、调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;
步骤104、依据查询对象及其参数修改信息,生成SQL查询语句;
步骤105、执行所述SQL查询语句,完成数据库查询,返回数据结果集。
由于本发明创新的提出了一种QUERY机制,因此,为了便于说明,在本说明书中一般称之为QUERY元数据,QUERY对象(步骤102中的查询对象)。
步骤101中的元数据是关于数据的数据;在程序中元数据不是被加工的对象,而是通过其值的改变来改变程序的行为的数据。它在运行过程中起着以解释方式控制程序行为的作用。例如,在设计期,技术人员可以对应用需求中的数据查询格式进行抽象建模,用面向对象的语言对数据查询进行描述,并保存为XML格式的元数据。该XML文件主要是对原有平台的数据查询格式的一种抽象归类后形成的描述性数据。
本实施例中提及的“设计时”和“运行时”属于本技术领域的专业术语,其中,“设计时”是指软件工程师设计QUERY机制的软件工程阶段;而“运行时”是指该QUERY机制被用户调用而实际运行的软件工程阶段。
下面对元数据的预置过程进行简单描述。其主要目的是针对不同的数据查询需求要分别设定QUERY元数据,因为通常不同的QUERY元数据之间所指定的实体表关联关系是不同的,面向的查询用户也不同,所以要分类设定,以示区别。例如,对于销售订单和员工表,可以关联起来定义一个QUERY元数据,查询销售订单和相关的销售人员信息;而采购订单和员工表也可以关联起来定义一个QUERY元数据,用于查询采购订单和相关采购人员信息。这两种查询在查询目的上显然是不同的,使用者也不同,可以认为是两类查询需求。具体在使用中根据不同的应用场景可以有所变化,如某些情况下只查询部分字段,某些情况下查询条件不同等,但基本都可以归在这两类查询之中。
步骤101中的用户指定信息,可以为QUERY元数据的关键值,例如,QUERY元数据等。为了便于查询,每个QUERY元数据均应具有一个唯一的KEY,用户通过KEY来指定期望的QUERY元数据。
步骤104中的SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是高级的非过程化编程语言,允许用户在高层数据结构上工作。其不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。由于SQL语言属于本领域的公知技术,在此不再详述。
对于步骤104自动生成SQL语句的过程,也属于本领域的常用技术。例如,本领域技术人员经常会通过O-R Mapping框架技术生成SQL语句。ORM,即Object-Relation Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,技术人员在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。例如,利用O/RMapping保存、删除或者读取对象,而由O/R Mapping负责生成SQL语句即可。
在图1所示的实施例中,通过步骤103的参数修改,就可以实现满足多种需求的动态查询。一般的,数据查询就是从大量的数据中选出用户需要的那部分数据;但是在实际应用中出于性能考虑,不可能每次都把所有的数据字段都查询出来返回给用户(会导致查询过程和传输过程冗长),而是根据实际需要来查询,即存在用户选择查询字段的情况,所以就产生了动态查询的需求。
例如在某个场景中用户可能需要查询用户名A和地址信息B,在第二个场景中查询的是用户名A和电话C,第三个场景中用户查询的可能是用户名A和岗位名称D。而在传统查询方式中,所有的查询都需要分别定义不同的查询来实现;而本发明则只需要预置一种QUERY元数据就可以满足上述的所有要求了;因为不管查询字段怎么变,上述的几种查询其核心部分<数据库表之间关联关系>是没有发生变化的,可以认为是针对同一类需求的。由于在QUERY元数据中已经把数据库表间的关联关系等信息都设置好了,运行时通过类似SetQueryField()的接口(用于修改查询字段的接口示例)传入运行期参数,即可输出只包含指定查询字段的SQL语句,从而实现动态查询。
当所需查询的数据库表(查询子对象)仅为一个时,则QUERY元数据中所述关于查询子对象的描述,仅仅描述该数据库表即可。而当所需查询的数据库表(查询子对象)为多个(两个或者两个以上)时,则所述预置的元数据关于查询子对象的描述中还可以包括:关于多个查询子对象关系的描述。
而相应的,所述调用参数接口对查询子对象进行修改的内容,则还可以包括:修改多个查询子对象的关系。实际上,由于数据库表之间的内在关系是由其存储的数据或者字段自身而决定的,这里所述的修改实际上就是添加这些已经存在的数据库表关系而已;但是由于原来的元数据中关于查询子对象的描述中并没有相应关系的描述,所以称之为“修改”。
从技术原理上而言,如果能够动态调整查询字段、过滤条件、排序条件以及查询指向的数据库表(包括各表之间的关系),则实际上,只要设置一个QUERY元数据就可以满足各种情况的查询需求,因为任何查询都可以分解为上述四项元素的组合。
但是,本发明优选的,仍然需要事先预置多个QUERY元数据,以满足基本种类的查询需求。因为如果每次查询都需要添加数据库表的关系,则对查询人员的技术要求过高,并要求对底层各个数据库表的关系都很清楚,实际中很难应用。因此,在本发明的优选实施例中,针对数据库表的关系的修改主要是针对一些特殊的、非常规的查询需求的,目的在于弥补一些特殊情况下无法覆盖的查询需求。
在本发明的另一优选实施例中,将直接依据查询获取的元数据信息而生成的查询对象置于缓存中,并复制生成一新的查询对象实例返回给调用者使用。这样的技术改进,可以保证各个用户的每一次查询在会话期间都是隔离的,不会相互影响。进而,如果当前调用者使用的查询结束,则销毁该用户使用的查询对象实例。当然,缓存中的原始QUERY对象则可以继续保留,以提供给下一个会话使用。
下面以一个具体例子对本发明进行更进一步的描述。
例如,在设计期,用户QUERY被定义为元数据并保存成XML文件。QUERY元数据中描述了以下主要内容:
Selector    描述SQL语句中的查询字段。
Filter      描述SQL语句中的过滤条件。
Order       描述SQL语句中的排序条件。
SubObject   描述SQL语句中的子对象。
本发明的动态QUERY机制可以设计为支持按照面向对象的方式来管理和执行查询,其内部按照SQL语法维护了Selector、Filter、Order及SubObject等内容,其中Selector描述了所有的查询字段,即最终要输出的数据库字段列表;Filter用于描述过滤条件。外部用户可以在运行期通过修改和设置过滤条件或者查询字段来改变SQL查询的输出内容。
本发明的动态QUERY机制支持对若干个数据库表进行关联查询,其内部定义了SubObject对象来描述各个不同的数据库表,并用一个SubObjects集合来管理所有的SubObject子对象。各个表之间的关系用Relation对象来描述(包含在SubObject对象中),每一个Relation描述了两个SubObject间的连接方式及关联字段等信息。运行期外部用户可以通过修改SubObjects对象集合及Relation关系来动态修改表关联关系,从而影响查询输出记录内容。
在实际使用中,一次完整的数据库查询流程通常如下:
1、用户指定要查询的QUERY,查找相应的元数据信息;
2、根据元数据信息装配JAVA内存对象;
3、用户根据需求调用参数接口,动态修改QUERY的查询方式;
4、根据内存QUERY对象生成SQL查询语句;
5、执行SQL数据库查询,返回数据结果集。
当外部用户需要使用动态QUERY进行查询时,首先要调用系统接口创建QUERY对象,系统会根据QUERY名称从系统XML文件中读入并装配QUERY对象。为保持原始对象状态,QUERY引擎将把原始的QUERY对象放置到缓存中,并克隆一个新的QUERY对象实例返回给调用者使用。因此动态QUERY在每一次查询会话期间都是隔离的,不会相互影响。
QUERY创建之后应用就可以使用对象进行数据库查询;此时该对象中已经装配了系统设计期定义的各项参数内容,包括预定义的查询字段、数据库表实体名、表之间的关联关系、查询过滤条件等;还可以包括一些其他的运行期内存对象。用户可以直接使用QUERY进行查询操作获取数据,也可以动态的修改QUERY内容,按照应用的需求进行各种新的自定义查询。主要操作方式可以为:为调用者创建一个参数集合对象,设置对象在其中加入要修改的内容,例如修改Selector改变查询字段,或修改Filter来改变过滤条件;甚至修改SubObjects和Relation来修改数据表关系等;该参数对象被传入QUERY对象后,将被用于动态改变QUERY内部结构,按照新的方式进行数据库查询。
本次查询结束后,则可以释放QUERY对象,系统将把用户使用的对象实例销毁。但缓存中的原始QUERY对象将继续保留,给下一个会话使用。
举例来说,假设有一个表关联查询,用户在不同的环境下希望有以下几种查询:查询字段A+B,查询字段A+C,查询字段A+D,以后还可能会增加新的查询方式。
假设本发明预置了一个查询字段包括A+B+C+D的QUERY元数据(一般预置常用的字段即可,不常用的字段可以在运行时期动态添加),由于数据查询的格式被用内存对象结构的方式来描述,因此可以在运行期调用接口来决定具体的查询字段。例如,使用与下面类似的接口方式:
SetQueryField(A+B)或SetQueryField(A+C)或SetQueryField(A+D)
即可实现不同方式的查询;
当然,还可以使用类似的接口方式:AddNewTable(TableA,TableB)
来动态添加原来没有的表关联关系;而这些修改在不同的用户会话间是隔离的。
当然,本领域技术人员也可以采用其他的接口方式实现参数的修改,本发明在此并不需要加以限定。
再例如,通过本发明的步骤101-104,可以得到如下的SQL语句:SELECT″PROVINCE″.FIDAS″ID″,″PROVINCE″.FNumber,″COUNTRY″.FNameFROMT_BD_ProvinceAS″PROVINCE″INNER JOINT_BD_CountryAS″COUNTRY"ON″PROVINCE″.FCountryID=″COUNTRY″.FIDWHERE((″PROVINCE″.FNumber LIKE'1')AND(″COUNTRY″.FName='中国'))ORDER BY″PROVINCE″.FNumber ASC
采用自然语言对其简单说明如下:上述SQL语句是一个针对省份及其所属国家资料的查询,国家和省份表之间通过FCountryID关联(即SubObject及其关联关系),查询字段为省份ID、省份名称、省份所属的国家名称(即Selector部分),查询条件是省份表记录的Fnumber(编号)like’1’且国家名称=’中国’(即Filter部分);排序条件是省份表的编号(即Order部分)。
参照图2,示出了一种数据库动态查询的装置实施例,具体可以包括:
元数据查找模块201,用于依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于查询子对象的描述;
查询对象生成模块202,用于依据所获取的元数据信息,生成查询对象;
参数修改模块203,用于调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;
SQL查询语句生成模块204,用于依据所述的查询对象及其参数修改信息,生成SQL查询语句;
查询执行模块205,用于执行所述SQL查询语句,完成数据库查询,返回数据结果集。
优选的,所述预置的元数据关于查询子对象的描述中还包括:关于多个查询子对象关系的描述。其中,所述参数修改模块对查询子对象进行修改的内容还包括:修改多个查询子对象的关系。
在本发明的另一优选实施例中,还可以包括:查询对象实例创建模块206,用于将所述查询对象生成模块得到的查询对象置于缓存中,并复制生成一新的查询对象实例返回给调用者使用。进而,还可以包括:查询对象实例销毁模块207,用于当前调用者使用的查询结束后,销毁该用户使用的查询对象实例。
综上所述,本发明可以让数据库结构实现逻辑上的可扩充性:当数据库系统的物理信息(主要指表结构、表数据)已经完成后,如果由于新的业务要求导致表数据的不够,这时就可以采用QUERY技术进行扩充(扩充数据库表及之间的关系),通过QUERY中强大的SQL来完成此功能。
采用本发明可以简化数据库系统的内部结构及其关系,因为物理表很多时候是以数据库范式原则分析建立的,尤其在数据冗余处理方面与实际业务会产生较大的分歧,采用QUERY可以将多个表通过SQL联合起来,产生与实际业务相适应的数据结果,这极大方便了软件开发及数据查询,因为利用QUERY的SQL写起来也比较简单。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种数据库动态查询的方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种数据库动态查询的方法,其特征在于,包括:
依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于查询子对象的描述;
依据所获取的元数据信息,生成查询对象;
调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;
依据查询对象及其参数修改信息,生成SQL查询语句;
执行所述SQL查询语句,完成数据库查询,返回数据结果集。
2.如权利要求1所述的方法,其特征在于,所述预置的元数据关于查询子对象的描述中还包括:关于多个查询子对象关系的描述。
3.如权利要求2所述的方法,其特征在于,所述调用参数接口对查询子对象进行修改的内容还包括:修改多个查询子对象的关系。
4.如权利要求1所述的方法,其特征在于,还包括:
将直接依据查询获取的元数据信息而生成的查询对象置于缓存中,并复制生成一新的查询对象实例返回给调用者使用。
5.如权利要求4所述的方法,其特征在于,还包括:当前调用者使用的查询结束后,销毁该用户使用的查询对象实例。
6.一种数据库动态查询的装置,其特征在于,包括:
元数据查找模块,用于依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于查询子对象的描述;
查询对象生成模块,用于依据所获取的元数据信息,生成查询对象;
参数修改模块,用于调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;
SQL查询语句生成模块,用于依据查询对象及其参数修改信息,生成SQL查询语句;
查询执行模块,用于执行所述SQL查询语句,完成数据库查询,返回数据结果集。
7.如权利要求6所述的装置,其特征在于,所述预置的元数据关于查询子对象的描述中还包括:关于多个查询子对象关系的描述。
8.如权利要求7所述的装置,其特征在于,所述参数修改模块对查询子对象进行修改的内容还包括:修改多个查询子对象的关系。
9.如权利要求6所述的装置,其特征在于,还包括:
查询对象实例创建模块,用于将所述查询对象生成模块得到的查询对象置于缓存中,并复制生成一新的查询对象实例返回给调用者使用。
10.如权利要求9所述的装置,其特征在于,还包括:
查询对象实例销毁模块,用于当前调用者使用的查询结束后,销毁该用户使用的查询对象实例。
CNB200710166023XA 2007-10-31 2007-10-31 一种数据库动态查询的方法和系统 Active CN100568244C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB200710166023XA CN100568244C (zh) 2007-10-31 2007-10-31 一种数据库动态查询的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB200710166023XA CN100568244C (zh) 2007-10-31 2007-10-31 一种数据库动态查询的方法和系统

Publications (2)

Publication Number Publication Date
CN101145162A true CN101145162A (zh) 2008-03-19
CN100568244C CN100568244C (zh) 2009-12-09

Family

ID=39207688

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200710166023XA Active CN100568244C (zh) 2007-10-31 2007-10-31 一种数据库动态查询的方法和系统

Country Status (1)

Country Link
CN (1) CN100568244C (zh)

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101692250A (zh) * 2009-08-31 2010-04-07 上海宝信软件股份有限公司 动态调整数据库数据在画面显示内容与格式的方法
CN102012945A (zh) * 2010-12-16 2011-04-13 重庆国际复合材料有限公司 一种面向用户的数据库管理系统
CN102063662A (zh) * 2010-12-30 2011-05-18 用友软件股份有限公司 补货需求生成方法和装置
CN102073642A (zh) * 2009-11-23 2011-05-25 英业达集团(天津)电子技术有限公司 自动生成结构化sql语句的方法与其电子装置
CN102426612A (zh) * 2012-01-13 2012-04-25 广州从兴电子开发有限公司 条件对象查询方法及系统
CN102708203A (zh) * 2012-05-18 2012-10-03 成都科泰地理信息技术有限公司 一种基于xml元数据的数据库动态管理方法
CN102799644A (zh) * 2012-06-28 2012-11-28 用友软件股份有限公司 基于元数据的数据库动态查询系统和数据库动态查询方法
CN102819557A (zh) * 2012-06-28 2012-12-12 用友软件股份有限公司 数据查询处理装置和数据查询处理方法
CN102929878A (zh) * 2011-08-09 2013-02-13 阿里巴巴集团控股有限公司 一种数据库变更管理方法及装置
CN101576925B (zh) * 2009-06-24 2013-03-27 用友软件股份有限公司 寻址方法和装置
CN103455615A (zh) * 2013-09-10 2013-12-18 中国地质大学(武汉) 一种微信帐号的排序过滤检索方法
CN103488694A (zh) * 2013-09-02 2014-01-01 用友软件股份有限公司 业务数据查询装置和业务数据查询方法
CN103577420A (zh) * 2012-07-23 2014-02-12 中国移动通信集团上海有限公司 一种用户信息动态查询方法及装置
CN103810171A (zh) * 2012-11-06 2014-05-21 深圳市金蝶中间件有限公司 生成限定范围的随机测试数据的方法及系统
CN104714952A (zh) * 2013-12-11 2015-06-17 航天信息股份有限公司 一种数据库的多重查询方法
CN104714973A (zh) * 2013-12-17 2015-06-17 航天信息股份有限公司 一种处理查询语句的方法和装置
CN105045912A (zh) * 2015-08-13 2015-11-11 浪潮通用软件有限公司 一种关系型数据库数据分发的方法
CN105354287A (zh) * 2015-10-30 2016-02-24 北京奇艺世纪科技有限公司 数据库元数据的获取方法及装置
CN105930516A (zh) * 2016-05-18 2016-09-07 广东源恒软件科技有限公司 一种对多个数据库中的纳税数据进行综合分析的方法
WO2016165321A1 (zh) * 2015-04-17 2016-10-20 中车青岛四方机车车辆股份有限公司 一种高速列车需求元模型建立方法和装置
CN106506661A (zh) * 2016-11-18 2017-03-15 浪潮软件集团有限公司 一种动态返回数据的方法、服务端及系统
CN106649314A (zh) * 2015-10-29 2017-05-10 北京国双科技有限公司 数据查询的方法及装置
CN106933893A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 多维度数据的查询方法及装置
CN107402920A (zh) * 2016-05-18 2017-11-28 北京京东尚科信息技术有限公司 确定关系数据库表关联复杂度的方法和装置
CN107577811A (zh) * 2017-09-29 2018-01-12 北京酷我科技有限公司 一种实体数据库快速读取的方法
CN107665228A (zh) * 2017-05-10 2018-02-06 平安科技(深圳)有限公司 一种关联信息查询方法、终端及设备
CN107729330A (zh) * 2016-08-10 2018-02-23 阿里巴巴集团控股有限公司 获取数据集的方法和装置
CN110083650A (zh) * 2019-04-25 2019-08-02 中电科嘉兴新型智慧城市科技发展有限公司 一种基于元数据自发现的数据查询接口自动生成方法及系统
CN110321355A (zh) * 2019-07-12 2019-10-11 杭州美巴科技有限公司 一种自适应部分查询字段系统及执行方法
CN111352955A (zh) * 2020-02-23 2020-06-30 中国平安财产保险股份有限公司 指标数据查询方法、装置、电子设备及存储介质
CN111400363A (zh) * 2020-02-23 2020-07-10 中国平安财产保险股份有限公司 指标数据处理方法、装置、电子设备及存储介质
CN112182349A (zh) * 2020-09-14 2021-01-05 支付宝(杭州)信息技术有限公司 合规档案的查询方法、装置及系统
CN112749222A (zh) * 2021-01-18 2021-05-04 北京睿企信息科技有限公司 一种支持动态参数的关系型数据库查询方法和装置
CN113590648A (zh) * 2021-07-30 2021-11-02 高途教育科技集团有限公司 一种数据查询方法、装置、设备和可读存储介质
CN113641745A (zh) * 2021-08-18 2021-11-12 上海通联金融服务有限公司 跨语言平台操作数据库的方法
CN113656434A (zh) * 2021-08-17 2021-11-16 广州市规划和自然资源自动化中心(广州市基础地理信息中心) 数据查询方法、装置、计算机设备和存储介质

Cited By (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101576925B (zh) * 2009-06-24 2013-03-27 用友软件股份有限公司 寻址方法和装置
CN101692250A (zh) * 2009-08-31 2010-04-07 上海宝信软件股份有限公司 动态调整数据库数据在画面显示内容与格式的方法
CN102073642A (zh) * 2009-11-23 2011-05-25 英业达集团(天津)电子技术有限公司 自动生成结构化sql语句的方法与其电子装置
CN102012945B (zh) * 2010-12-16 2013-01-02 重庆国际复合材料有限公司 一种面向用户的数据库管理系统
CN102012945A (zh) * 2010-12-16 2011-04-13 重庆国际复合材料有限公司 一种面向用户的数据库管理系统
CN102063662A (zh) * 2010-12-30 2011-05-18 用友软件股份有限公司 补货需求生成方法和装置
CN102929878B (zh) * 2011-08-09 2016-09-07 阿里巴巴集团控股有限公司 一种数据库变更管理方法及装置
CN102929878A (zh) * 2011-08-09 2013-02-13 阿里巴巴集团控股有限公司 一种数据库变更管理方法及装置
CN102426612A (zh) * 2012-01-13 2012-04-25 广州从兴电子开发有限公司 条件对象查询方法及系统
CN102708203A (zh) * 2012-05-18 2012-10-03 成都科泰地理信息技术有限公司 一种基于xml元数据的数据库动态管理方法
CN102819557A (zh) * 2012-06-28 2012-12-12 用友软件股份有限公司 数据查询处理装置和数据查询处理方法
CN102799644B (zh) * 2012-06-28 2015-09-23 用友软件股份有限公司 基于元数据的数据库动态查询系统和数据库动态查询方法
CN102799644A (zh) * 2012-06-28 2012-11-28 用友软件股份有限公司 基于元数据的数据库动态查询系统和数据库动态查询方法
CN102819557B (zh) * 2012-06-28 2016-01-13 用友网络科技股份有限公司 数据查询处理装置和数据查询处理方法
CN103577420A (zh) * 2012-07-23 2014-02-12 中国移动通信集团上海有限公司 一种用户信息动态查询方法及装置
CN103810171B (zh) * 2012-11-06 2017-02-08 深圳市金蝶天燕中间件股份有限公司 生成限定范围的随机测试数据的方法及系统
CN103810171A (zh) * 2012-11-06 2014-05-21 深圳市金蝶中间件有限公司 生成限定范围的随机测试数据的方法及系统
CN103488694A (zh) * 2013-09-02 2014-01-01 用友软件股份有限公司 业务数据查询装置和业务数据查询方法
CN103455615A (zh) * 2013-09-10 2013-12-18 中国地质大学(武汉) 一种微信帐号的排序过滤检索方法
CN104714952A (zh) * 2013-12-11 2015-06-17 航天信息股份有限公司 一种数据库的多重查询方法
CN104714952B (zh) * 2013-12-11 2018-07-06 航天信息股份有限公司 一种数据库的多重查询方法
CN104714973A (zh) * 2013-12-17 2015-06-17 航天信息股份有限公司 一种处理查询语句的方法和装置
WO2016165321A1 (zh) * 2015-04-17 2016-10-20 中车青岛四方机车车辆股份有限公司 一种高速列车需求元模型建立方法和装置
CN105045912A (zh) * 2015-08-13 2015-11-11 浪潮通用软件有限公司 一种关系型数据库数据分发的方法
CN106649314A (zh) * 2015-10-29 2017-05-10 北京国双科技有限公司 数据查询的方法及装置
CN105354287A (zh) * 2015-10-30 2016-02-24 北京奇艺世纪科技有限公司 数据库元数据的获取方法及装置
CN106933893A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 多维度数据的查询方法及装置
CN106933893B (zh) * 2015-12-31 2019-12-10 北京国双科技有限公司 多维度数据的查询方法及装置
CN105930516A (zh) * 2016-05-18 2016-09-07 广东源恒软件科技有限公司 一种对多个数据库中的纳税数据进行综合分析的方法
CN107402920A (zh) * 2016-05-18 2017-11-28 北京京东尚科信息技术有限公司 确定关系数据库表关联复杂度的方法和装置
CN107402920B (zh) * 2016-05-18 2020-02-07 北京京东尚科信息技术有限公司 确定关系数据库表关联复杂度的方法和装置
CN107729330A (zh) * 2016-08-10 2018-02-23 阿里巴巴集团控股有限公司 获取数据集的方法和装置
CN106506661A (zh) * 2016-11-18 2017-03-15 浪潮软件集团有限公司 一种动态返回数据的方法、服务端及系统
WO2018205376A1 (zh) * 2017-05-10 2018-11-15 平安科技(深圳)有限公司 一种关联信息查询方法、终端、服务器管理系统及计算机可读存储介质
CN107665228A (zh) * 2017-05-10 2018-02-06 平安科技(深圳)有限公司 一种关联信息查询方法、终端及设备
CN107665228B (zh) * 2017-05-10 2019-12-20 平安科技(深圳)有限公司 一种关联信息查询方法、终端及设备
CN107577811A (zh) * 2017-09-29 2018-01-12 北京酷我科技有限公司 一种实体数据库快速读取的方法
CN110083650A (zh) * 2019-04-25 2019-08-02 中电科嘉兴新型智慧城市科技发展有限公司 一种基于元数据自发现的数据查询接口自动生成方法及系统
CN110321355A (zh) * 2019-07-12 2019-10-11 杭州美巴科技有限公司 一种自适应部分查询字段系统及执行方法
CN111352955A (zh) * 2020-02-23 2020-06-30 中国平安财产保险股份有限公司 指标数据查询方法、装置、电子设备及存储介质
CN111400363A (zh) * 2020-02-23 2020-07-10 中国平安财产保险股份有限公司 指标数据处理方法、装置、电子设备及存储介质
CN112182349A (zh) * 2020-09-14 2021-01-05 支付宝(杭州)信息技术有限公司 合规档案的查询方法、装置及系统
CN112749222A (zh) * 2021-01-18 2021-05-04 北京睿企信息科技有限公司 一种支持动态参数的关系型数据库查询方法和装置
CN112749222B (zh) * 2021-01-18 2024-03-19 北京睿企信息科技有限公司 一种支持动态参数的关系型数据库查询方法和装置
CN113590648A (zh) * 2021-07-30 2021-11-02 高途教育科技集团有限公司 一种数据查询方法、装置、设备和可读存储介质
CN113656434A (zh) * 2021-08-17 2021-11-16 广州市规划和自然资源自动化中心(广州市基础地理信息中心) 数据查询方法、装置、计算机设备和存储介质
CN113641745A (zh) * 2021-08-18 2021-11-12 上海通联金融服务有限公司 跨语言平台操作数据库的方法
CN113641745B (zh) * 2021-08-18 2024-01-26 上海通联金融服务有限公司 跨语言平台操作数据库的方法

Also Published As

Publication number Publication date
CN100568244C (zh) 2009-12-09

Similar Documents

Publication Publication Date Title
CN100568244C (zh) 一种数据库动态查询的方法和系统
Chambers et al. Spark: The definitive guide: Big data processing made simple
JP5065056B2 (ja) ワークフローを処理するための方法、コンピュータ・プログラム、およびシステム(ワークフロー・システムへのデータ管理動作の統合)
US11409815B2 (en) Transforming an expression tree hierarchy of a database query for dynamic data of a database
US8412746B2 (en) Method and system for federated querying of data sources
US7873591B2 (en) User-interface architecture for manipulating business models
US8694557B2 (en) Extensibility of metaobjects
US8689171B2 (en) System and method for managing resources using a compositional programming model
US6965899B1 (en) Online reorganization and redefinition of relational database tables
CN112328212A (zh) 一种基于引擎模式前后端分离的快速开发平台及其使用方法
CN101794315A (zh) 一种数据库模式固定的对象关系映射模型
US20080263142A1 (en) Meta Data Driven User Interface System and Method
CN108228762B (zh) 用于配置主数据库通用模板的方法和系统
EP3857421A1 (en) Static data masking
CN113468149B (zh) 一种数据模型开发平台
Jennings Professional ADO. NET 3.5 with LINQ and the Entity Framework
US8650534B2 (en) Metaobject enhancement objects
US20080263018A1 (en) Method and System for Mapping Business Objects to Relational Database Tables
Borkar et al. XML data services
Mazári et al. Petriflow in actions: Events call actions call events
Kambayashi et al. A relational data language with simplified binary relation handling capability
Troelsen et al. Exploring Entity Framework Core
Jia-di et al. Modeling Language Design and Mapping Rules for REST Interface
Alia et al. A middleware framework for the persistence and querying of java objects
EP1843258A1 (en) Modeling data from disparate data sources

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant