CN102799644B - 基于元数据的数据库动态查询系统和数据库动态查询方法 - Google Patents

基于元数据的数据库动态查询系统和数据库动态查询方法 Download PDF

Info

Publication number
CN102799644B
CN102799644B CN201210222583.3A CN201210222583A CN102799644B CN 102799644 B CN102799644 B CN 102799644B CN 201210222583 A CN201210222583 A CN 201210222583A CN 102799644 B CN102799644 B CN 102799644B
Authority
CN
China
Prior art keywords
expression formula
inquiry
language
integrated
metadata
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.)
Active
Application number
CN201210222583.3A
Other languages
English (en)
Other versions
CN102799644A (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.)
You Pu Information Technology Co., Ltd of UFSOFT
Original Assignee
Yonyou Software 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 Yonyou Software Co Ltd filed Critical Yonyou Software Co Ltd
Priority to CN201210222583.3A priority Critical patent/CN102799644B/zh
Publication of CN102799644A publication Critical patent/CN102799644A/zh
Application granted granted Critical
Publication of CN102799644B publication Critical patent/CN102799644B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

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

Abstract

本发明提供了一种基于元数据的数据库动态查询系统,包括:表达式获取单元,用于获取语言集成查询的表达式;表达式解析单元,用于根据所述语言集成查询的表达式遵循的语言集成查询标准、以及实体或业务对象的元数据信息,对所述语言集成查询的表达式进行解析,以生成相应的SQL查询语句;查询单元,用于执行所述SQL查询语句,以从数据库获取并返回相应的查询结果。相应地,本发明还提出了一种基于元数据的数据库动态查询方法。通过本发明的技术方案,无需在系统开发前期预置查询方案,也无需调用特定参数接口,即可实现复杂的SQL查询运用,增加了动态查询的灵活性,同时使得弱类型的业务对象和实体,具有面向对象的查询。

Description

基于元数据的数据库动态查询系统和数据库动态查询方法
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种基于元数据的数据库动态查询系统和数据库动态查询方法。
背景技术
在业务应用系统中,特别在实现复杂的数据处理业务中,业务数据的查询操作是常用且频繁的,一般的开发手段通常是通过硬编码SQL查询来实现,这样使得产品极不易维护且查询语句难以得到复用。
在相关技术中,还提供了依据用户指定的信息,从预置的多个元数据中查找相对应的元数据:其包括查询的字段的描述,过滤条件的描述,排序字段的描述,以及关于查询子对象的描述,生成查询对象;在通过调用参数接口,以及实际需求修改查询字段,过滤条件,排序条件极其查询子对象及其参数信息,生成SQL查询,执行后,返回对应的数据集。
但这种处理方式具有一定得局限性,其表现在:1.只有在开发前期预置相对应的查询方案,再根据预置的查询方案做局部性修改,改造成适合特定查询方案,才能实现动态的数据库查询。2.通过调用特定参数接口,对预置的查询方案进行修改,如果不对参数接口的扩展,就会制约复杂的SQL查询运用和动态查询的灵活性。
因此,需要一种新的数据库动态查询方法,无需在系统开发前期预置查询方案,也无需调用特定参数接口,即可实现复杂的SQL查询运用,增加了动态查询的灵活性,同时使得弱类型的业务对象和实体,具有面向对象的查询。
发明内容
本发明正是基于上述问题,提出了一种新的数据库动态查询方法,无需在系统开发前期预置查询方案,也无需调用特定参数接口,即可实现复杂的SQL查询运用,增加了动态查询的灵活性,同时使得弱类型的业务对象和实体,具有面向对象的查询。
有鉴于此,本发明提出了一种基于元数据的数据库动态查询系统,包括:表达式获取单元,用于获取语言集成查询的表达式;表达式解析单元,用于根据所述语言集成查询的表达式遵循的语言集成查询标准、以及实体或业务对象的元数据信息,对所述语言集成查询的表达式进行解析,以生成相应的SQL查询语句;查询单元,用于执行所述SQL查询语句,以从数据库获取并返回相应的查询结果。在该技术方案中,通过语言集成查询的表达式转换,得到SQL查询语句,实现数据库的动态查询。
在上述技术方案中,优选地,所述表达式获取单元包括:第一表达式生成子单元,用于根据预设的语言集成查询标准生成所述语言集成查询的表达式;或语义定义子单元、第二表达式生成子单元和表达式转换子单元,其中,所述语义定义子单元用于定义表达式生成规范,所述第二表达式生成子单元用于根据所述表达式生成规范生成字符类型的表达式,所述表达式转换子单元用于将所述字符类型的表达式转换为所述语言集成查询的表达式。在该技术方案中,通过对表达式生成规范的定义,从而使得生成的字符类型的表达式能够被转换为语言集成查询的表达式。
在上述技术方案中,优选地,所述表达式转换子单元包括:信息获取模块,用于通过切分所述字符类型的表达式,以获取其中的信息,所述信息包括条件列;类型获取模块,用于根据所述实体或业务对象的元数据信息,获取所述条件列真实的物理类型;转换处理模块,用于根据所述信息和所述物理类型将所述字符类型的表达式装配成所述语言集成查询的表达式。在该技术方案中,将元数据信息引入生成的表达式,从而实现对相应数据的查询。
在上述技术方案中,优选地,所述表达式解析单元包括:属性信息获取子单元,用于通过构建所述语言集成查询的表达式的目录树访问器,以获取所述语言集成查询的表达式的属性信息;查询语句生成子单元,用于根据所述属性信息及所述实体或业务对象的元数据信息装配成SQL构造器,以生成所述SQL查询语句。在该技术方案中,能够生成相应的SQL查询语句,而不需要预置数据或调用特定参数接口。
在上述技术方案中,优选地,所述表达式解析单元还包括:语句优化子单元,用于通过所述SQL构造器对生成的SQL查询语句进行优化处理。在该技术方案中,通过对SQL语句进行优化,使得查询过程更为快速、节省资源。
根据本发明的又一方面,还提出了一种基于元数据的数据库动态查询方法,包括:步骤202,获取语言集成查询的表达式;步骤204,根据所述语言集成查询的表达式遵循的语言集成查询标准、以及实体或业务对象的元数据信息,对所述语言集成查询的表达式进行解析,以生成相应的SQL查询语句;步骤206,执行所述SQL查询语句,以从数据库获取并返回相应的查询结果。在该技术方案中,通过语言集成查询的表达式转换,得到SQL查询语句,实现数据库的动态查询。
在上述技术方案中,优选地,所述步骤202包括:根据预设的语言集成查询标准生成所述语言集成查询的表达式;或定义表达式生成规范,根据所述表达式生成规范生成字符类型的表达式,并将所述字符类型的表达式转换为所述语言集成查询的表达式。在该技术方案中,通过对表达式生成规范的定义,从而使得生成的字符类型的表达式能够被转换为语言集成查询的表达式。
在上述技术方案中,优选地,将所述字符类型的表达式转换为所述语言集成查询的表达式的过程包括:切分所述字符类型的表达式,以获取其中的信息,所述信息包括条件列;根据所述实体或业务对象的元数据信息,获取所述条件列真实的物理类型,从而根据所述信息和所述物理类型将所述字符类型的表达式装配成所述语言集成查询的表达式。在该技术方案中,将元数据信息引入生成的表达式,从而实现对相应数据的查询。
在上述技术方案中,优选地,在所述步骤204中,对所述语言集成查询的表达式进行解析的过程包括:构建所述语言集成查询的表达式的目录树访问器,以获取所述语言集成查询的表达式的属性信息;根据所述属性信息及所述实体或业务对象的元数据信息装配成SQL构造器,以生成所述SQL查询语句。在该技术方案中,能够生成相应的SQL查询语句,而不需要预置数据或调用特定参数接口。
在上述技术方案中,优选地,所述步骤204还包括:所述SQL构造器对生成的SQL查询语句进行优化处理。在该技术方案中,通过对SQL语句进行优化,使得查询过程更为快速、节省资源。
通过以上技术方案,无需在系统开发前期预置查询方案,也无需调用特定参数接口,即可实现复杂的SQL查询运用,增加了动态查询的灵活性,同时使得弱类型的业务对象和实体,具有面向对象的查询。
附图说明
图1示出了根据本发明的实施例的基于元数据的数据库动态查询系统的框图;
图2示出了根据本发明的实施例的基于元数据的数据库动态查询方法的流程图;
图3示出了根据本发明的实施例的表达式目录树的访问时序图;
图4示出了根据本发明的实施例的表达式目录树的解析图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的基于元数据的数据库动态查询系统的框图。
如图1所示,根据本发明的实施例的基于元数据的数据库动态查询系统100,包括:表达式获取单元102,用于获取语言集成查询的表达式;表达式解析单元104,用于根据语言集成查询的表达式遵循的语言集成查询标准、以及实体或业务对象的元数据信息,对语言集成查询的表达式进行解析,以生成相应的SQL查询语句;查询单元106,用于执行SQL查询语句,以从数据库获取并返回相应的查询结果。在该技术方案中,通过语言集成查询的表达式转换,得到SQL查询语句,实现数据库的动态查询。
在上述技术方案中,优选地,表达式获取单元102包括:第一表达式生成子单元1020,用于根据预设的语言集成查询标准生成语言集成查询的表达式;或语义定义子单元1021、第二表达式生成子单元1022和表达式转换子单元1024,其中,语义定义子单元1021用于定义表达式生成规范,第二表达式生成子单元1022用于根据表达式生成规范生成字符类型的表达式,表达式转换子单元1024用于将字符类型的表达式转换为语言集成查询的表达式。在该技术方案中,通过对表达式生成规范的定义,从而使得生成的字符类型的表达式能够被转换为语言集成查询的表达式。
在上述技术方案中,优选地,表达式转换子单元1024包括:信息获取模块1024A,用于通过切分字符类型的表达式,以获取其中的信息,该信息包括条件列;类型获取模块1024B,用于根据实体或业务对象的元数据信息,获取条件列真实的物理类型;转换处理模块1024C,用于根据信息和物理类型将字符类型的表达式装配成语言集成查询的表达式。在该技术方案中,将元数据信息引入生成的表达式,从而实现对相应数据的查询。
在上述技术方案中,优选地,表达式解析单元104包括:属性信息获取子单元1040,用于通过构建语言集成查询的表达式的目录树访问器,以获取语言集成查询的表达式的属性信息;查询语句生成子单元1042,用于根据属性信息及实体或业务对象的元数据信息装配成SQL构造器,以生成SQL查询语句。在该技术方案中,能够生成相应的SQL查询语句,而不需要预置数据或调用特定参数接口。
在上述技术方案中,优选地,表达式解析单元104还包括:语句优化子单元1044,用于通过SQL构造器对生成的SQL查询语句进行优化处理。在该技术方案中,通过对SQL语句进行优化,使得查询过程更为快速、节省资源。
图2示出了根据本发明的实施例的基于元数据的数据库动态查询方法的流程图。
如图2所示,根据本发明的实施例的基于元数据的数据库动态查询方法,包括:步骤202,获取语言集成查询的表达式;步骤204,根据语言集成查询的表达式遵循的语言集成查询标准、以及实体或业务对象的元数据信息,对语言集成查询的表达式进行解析,以生成相应的SQL查询语句;步骤206,执行SQL查询语句,以从数据库获取并返回相应的查询结果。在该技术方案中,通过语言集成查询的表达式转换,得到SQL查询语句,实现数据库的动态查询。
在上述技术方案中,优选地,步骤202包括:根据预设的语言集成查询标准生成语言集成查询的表达式;或定义表达式生成规范,根据表达式生成规范生成字符类型的表达式,并将字符类型的表达式转换为语言集成查询的表达式。在该技术方案中,通过对表达式生成规范的定义,从而使得生成的字符类型的表达式能够被转换为语言集成查询的表达式。
在上述技术方案中,优选地,将字符类型的表达式转换为语言集成查询的表达式的过程包括:切分字符类型的表达式,以获取其中的信息,该信息包括条件列;根据实体或业务对象的元数据信息,获取条件列真实的物理类型,从而根据信息和物理类型将字符类型的表达式装配成语言集成查询的表达式。在该技术方案中,将元数据信息引入生成的表达式,从而实现对相应数据的查询。
在上述技术方案中,优选地,在步骤204中,对语言集成查询的表达式进行解析的过程包括:构建语言集成查询的表达式的目录树访问器,以获取语言集成查询的表达式的属性信息;根据属性信息及实体或业务对象的元数据信息装配成SQL构造器,以生成SQL查询语句。在该技术方案中,能够生成相应的SQL查询语句,而不需要预置数据或调用特定参数接口。
在上述技术方案中,优选地,步骤204还包括:SQL构造器对生成的SQL查询语句进行优化处理。在该技术方案中,通过对SQL语句进行优化,使得查询过程更为快速、节省资源。
下面结合图3和图4,对基于本发明的技术方案进行详细说明,其中,图3示出了根据本发明的实施例的表达式目录树的访问时序图;图4示出了根据本发明的实施例的表达式目录树的解析图。
本发明依赖基础的实体和业务对象元数据信息,遵从微软指定的语言集成查询的语言规范或用户自定义的语言规范,通过动态解析语言装配成集成查询表达式,然后通过表达式目录树访问器获取查询的各个元件,又根据基础的元数据信息,来装配SQL构造器,最后通过SQL构造器编译生成SQL查询语句,最后在最终的数据源(如SQL,oracle,XML文件等)进行查询。通过该发明方案可以来实现各种复杂和灵活多变的查询,满足纷繁复杂的查询需求;提高了基础元数据的利用率,从而让程序的维护简易化,提高了动态查询机制的灵活性;统一集中对生成SQL语句进行性能检测,分步优化,从而使SQL语句的执行效率提高。
这里涉及到根据定义的语言规范将字符串生成为表达式(String2Expression)的过程,这里的语言规范可以采用多种方式,比如一种方式下,可以按操作符分类定义的规范:
LinqToQeProvider<IBizDataRow>BizRows=
new LinqToQeProvider<IBizDataRow>("BoMetaID",PoLine.EntityKey,QueryType.Bo DynamicQuery);
参数说明:No61为业务对象的元数据编码;PoLine.EntityKey为业务实体的元数据编码;QueryType.BoDynamicQuery为指定查询类型为业务对象的动态查询。
具体地,可以分为一元运算符、二元运算符、三元运算符等,如:
一元运算符:
!取反运算符
字符串条件="!(name==0)";
数组参数集合={″test"};
查询结果集=查询业务对象.过滤(转换器<查询结果对象类型,布尔值类型>(条件,参数));
二元运算符:
==相等运算符
字符串条件="name==0";
数组参数集合={″test"};
查询结果集=查询业务对象.过滤(转换器<查询结果对象类型,布尔值类型>(条件,参数));
!=不相等运算符
字符串条件="name!=0";
数组参数集合={″test"};
查询结果集=查询业务对象.过滤(转换器<查询结果对象类型,布尔值类型>(条件,参数));
<=大于等于运算符
字符串条件="money<=0";
数组参数集合={100};
查询结果集=查询业务对象.过滤(转换器<查询结果对象类型,布尔值类型>(条件,参数));
<大于运算符
字符串条件="money<0";
数组参数集合={100};
查询结果集=查询业务对象.过滤(转换器<查询结果对象类型,布尔值类型>(条件,参数));
>小于运算符
字符串条件="money>0";
数组参数集合={100};
查询结果集=查询业务对象.过滤(转换器<查询结果对象类型,布尔值类型>(条件,参数));
||或运算符
字符串条件="(docType==0)||(docType==1)";
数组参数集合={“到货单”,”收货单”};
查询结果集=查询业务对象.过滤(转换器<查询结果对象类型,布尔值类型>(条件,参数));
&&与运算符
字符串条件="(docType==0)||(docType==1)";
数组参数集合={“到货单”,”收货单”};
查询结果集=查询业务对象.过滤(转换器<查询结果对象类型,布尔值类型>(条件,参数));
三元运算符:
?:不支持
另一种方式,可以按内置函数定义的规范:
模糊配合函数:$Like
数组参数集合={″test%"};
字符串条件="$Like(colentity,0)";
包含函数:$IN
数组参数集合={″('test 1','test 2')"};
字符串条件="$In(name,1)";
内置函数的混合规范
数组参数集合={"mm%","('test 1','test 2')"};
字符串条件="($Like(colentity,0)&&$In(name,1))";
使用以上所定义的规范(仅为举例,本文没提到的规范并不意味着为没做定义),可灵活地实现各种组合的查询。
从技术原理上说,字符类型的条件表达式,通过DynamicExpression类的ParseLambda<T,S>(string expression,params object[]values)方法,来切分出操作符、条件列、值等信息,在再根据基础的元数据信息,获取条件列真实的物理类型,从而再装配成语言集成的查询表达式。
示例:按客户名称查询客户档案记录:
其查询构造表达式:
而语言集成查询的表达式,其是依赖于某一具体实体或业务对象进行的动态查询,具体如下:
应用场景:应用开发当中,将面向过程查询转换成面向对象的查询,使得查询书写更灵活,能兼容到特点环境中的内置函数(如C#字符串的长度属性和Contain()方法)等。
技术原理:构建表达式目录树访问器,获取结果列、条件表达式树的内容(操作符、条件列、值)、分组列,排序列,having列,条件表达式树与根据基础的元数据信息一起决定装配条件部分。从对应的实体或业务对象中,获取查询查询表名和查询级联关系。通过数据查询引擎,按结果列,条件部分,排序列,分组列,having列,分页设置等装配成SQL构造器,由SQL构造器编译生成优化处理后的SQL语句,最终由SQL执行器执行返回查询结果集。
实现表达式目录树访问器
public abstract class目录树访问器
{
protected目录树访问器构造函数()
{}
protected virtual表达式表达式遍历函数(表达式类表达式)
{
if(==null)
return表达式;
switch(表达式.表达式运算符)
{
case表达式类型枚举.非运算:
case表达式类型枚举.不等于:
case表达式类型枚举.等于:
case表达式类型枚举.大于:
case表达式类型枚举.大于等于:
case表达式类型枚举.小于:
case表达式类型枚举.小于等于:
case表达式类型枚举.与运算:
case表达式类型枚举.与运算:
return this.二元表达式遍历函数((二元表达式类)表达式);
case表达式类型枚举.类型转换:
case表达式类型枚举.调用委托:
return this.调用委托函数表达式((调用表达式)表达式);
case表达式类型枚举.成员表达式:
return this.调用构造函数并初始化表达式((调用构造函数)表达式);
default:
throw new异常(没定义和处理的表达式类型,表达式.枚举项));
}
}
Protected  Virtual表达式二元表达式遍历函数(二元表达式表达式);
{
自身逻辑处理代码:构造SQL条件表达二叉树
Return基类.表达式遍历函数(表达式);
}
下面以一示例进行说明:
示例:业务对象的动态查询(按单据的创建日期查询单据记录)
LinqToQeProvider<IBizDataRow>BizRows=
new  LinqToQeProvider<IBizDataRow>("No61″,PoLine.EntityKey,QueryType.Bo DynamicQuery);
参数说明:No61为业务对象的元数据编码;
PoLine.EntityKey为业务实体的元数据编码;
QueryType.BoDynamicQuery为指定查询类型为业务对象的动态查询。
另外,本方案通过构造SQL构造器,从而生成SQL语句并对SQL语句进行尽可能地优化,具体地,按结果列、条件部分、排序列、分组列、having列、分页设置等装配成SQL构造器后,由SQL构造器编译生成SQL语句,并最大限度对SQL语句的优化,如在动态查询中结果列、条件部分、排序列,分组列中没有出现参与查询的表,该动态查询对其级联关系取消;条件谓词中出现IN,且其中值为具体的值而非嵌套的子查询,该动态查询把IN部分优化成临时表,生成的SQL语句与之关联。
条件谓词IN部分优化成临时表脚本示例:
declareTableVar1286728257Table(cUser_Id nvarchar(MAX));
declareTableVar72919503Table(cUser_Name nvarchar(MAX));
insert intoTableVar1286728257values('00001');
insert intoTableVar1286728257values('00002');
insert intoTableVar72919503values('王铭');
insert intoTableVar72919503values('冯建国');
insert intoTableVar72919503values('杜军');
SELECT  BE_user_zy_ua_user.cSysUserPassword    AS[cSysUserPassword],
BE_user_zy_ua_user.cUserHand AS[cUserHand],
BE_user_zy_ua_user.cSysUserName AS[cSysUserName]
FROM  zy_ua_user AS BE_user_zy_ua_user
INNER JOIN TableVar1286728257AS TableVar1286728257
ON    TableVar1286728257.cUser_Id    =BE_user_zy_ua_user.cUser_Id
INNER JOIN  TableVar72919503AS TableVar72919503
ON    TableVar72919503.cUser_Name    =BE_user_zy_ua_user.cUser_Name
WHERE(1=1)
本方面技术方案的优点:
通过本发明的技术方案,在程序运行前期无需预置查询方案,动态查询完全基于基础的实体和业务对象元素运行,在软件开发过程中,软件开发人员无需显示调用系统方法,只要遵从集成查询标准规范即可动态解析成SQL语句。
因此,该发明方案的运用,在应用上具有以下优势:
1、无需复杂学习过程即可上手。
2、编写更少代码即可创建完整应用。
3、更快开发错误更少的应用程序。
4、无需求助奇怪的编程技巧就可合并数据源。
5、让新开发者开发效率更高。
该发明应用到软件开发中,可以使得分模块、分层次、大规模开发更高效和便捷。上层业务开发人员,无需关注数据的获取过程(拼接SQL,执行SQL),可以简单地获取业务所需要的数据而且可灵活多变。
使用本发明提供的方法和系统,可以为各种应用场景提供动态查询,包括:实体的动态查询,业务对象的动态查询,参照、列表、报表按照用户动态设置的方案查询等。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于元数据的数据库动态查询系统,其特征在于,包括:
表达式获取单元,用于获取语言集成查询的表达式;
表达式解析单元,用于根据所述语言集成查询的表达式遵循的语言集成查询标准、以及实体或业务对象的元数据信息,对所述语言集成查询的表达式进行解析,以生成相应的SQL查询语句;
查询单元,用于执行所述SQL查询语句,以从数据库获取并返回相应的查询结果;
其中,所述表达式解析单元包括:
属性信息获取子单元,用于通过构建所述语言集成查询的表达式的目录树访问器,以获取所述语言集成查询的表达式的属性信息;
查询语句生成子单元,用于根据所述属性信息及所述实体或业务对象的元数据信息装配成SQL构造器,以生成所述SQL查询语句。
2.根据权利要求1所述的基于元数据的数据库动态查询系统,其特征在于,所述表达式获取单元包括:
第一表达式生成子单元,用于根据预设的语言集成查询标准生成所述语言集成查询的表达式;或
语义定义子单元、第二表达式生成子单元和表达式转换子单元,其中,所述语义定义子单元用于定义表达式生成规范,所述第二表达式生成子单元用于根据所述表达式生成规范生成字符类型的表达式,所述表达式转换子单元用于将所述字符类型的表达式转换为所述语言集成查询的表达式。
3.根据权利要求2所述的基于元数据的数据库动态查询系统,其特征在于,所述表达式转换子单元包括:
信息获取模块,用于通过切分所述字符类型的表达式,以获取其中的信息,所述信息包括条件列;
类型获取模块,用于根据所述实体或业务对象的元数据信息,获取所述条件列真实的物理类型;
转换处理模块,用于根据所述信息和所述物理类型将所述字符类型的表达式装配成所述语言集成查询的表达式。
4.根据权利要求1所述的基于元数据的数据库动态查询系统,其特征在于,所述表达式解析单元还包括:
语句优化子单元,用于通过所述SQL构造器对生成的SQL查询语句进行优化处理。
5.一种基于元数据的数据库动态查询方法,其特征在于,包括:
步骤202,获取语言集成查询的表达式;
步骤204,根据所述语言集成查询的表达式遵循的语言集成查询标准、以及实体或业务对象的元数据信息,对所述语言集成查询的表达式进行解析,以生成相应的SQL查询语句;
步骤206,执行所述SQL查询语句,以从数据库获取并返回相应的查询结果;
其中,在所述步骤204中,对所述语言集成查询的表达式进行解析的过程包括:
构建所述语言集成查询的表达式的目录树访问器,以获取所述语言集成查询的表达式的属性信息;
根据所述属性信息及所述实体或业务对象的元数据信息装配成SQL构造器,以生成所述SQL查询语句。
6.根据权利要求5所述的基于元数据的数据库动态查询方法,其特征在于,所述步骤202包括:
根据预设的语言集成查询标准生成所述语言集成查询的表达式;或
定义表达式生成规范,根据所述表达式生成规范生成字符类型的表达式,并将所述字符类型的表达式转换为所述语言集成查询的表达式。
7.根据权利要求6所述的基于元数据的数据库动态查询方法,其特征在于,将所述字符类型的表达式转换为所述语言集成查询的表达式的过程包括:
切分所述字符类型的表达式,以获取其中的信息,所述信息包括条件列;
根据所述实体或业务对象的元数据信息,获取所述条件列真实的物理类型,从而根据所述信息和所述物理类型将所述字符类型的表达式装配成所述语言集成查询的表达式。
8.根据权利要求5所述的基于元数据的数据库动态查询方法,其特征在于,所述步骤204还包括:
所述SQL构造器对生成的SQL查询语句进行优化处理。
CN201210222583.3A 2012-06-28 2012-06-28 基于元数据的数据库动态查询系统和数据库动态查询方法 Active CN102799644B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210222583.3A CN102799644B (zh) 2012-06-28 2012-06-28 基于元数据的数据库动态查询系统和数据库动态查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210222583.3A CN102799644B (zh) 2012-06-28 2012-06-28 基于元数据的数据库动态查询系统和数据库动态查询方法

Publications (2)

Publication Number Publication Date
CN102799644A CN102799644A (zh) 2012-11-28
CN102799644B true CN102799644B (zh) 2015-09-23

Family

ID=47198754

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210222583.3A Active CN102799644B (zh) 2012-06-28 2012-06-28 基于元数据的数据库动态查询系统和数据库动态查询方法

Country Status (1)

Country Link
CN (1) CN102799644B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092998B (zh) * 2013-02-21 2017-02-08 用友网络科技股份有限公司 数据查询系统和数据查询方法
CN104252509A (zh) * 2013-11-05 2014-12-31 深圳市华傲数据技术有限公司 一种表达式执行方法和装置
CN104714975A (zh) * 2013-12-17 2015-06-17 航天信息股份有限公司 一种动态的查询语句处理方法及其装置
CN104462429B (zh) * 2014-12-12 2017-12-22 北京国双科技有限公司 数据库查询语句的生成方法及装置
CN104766151A (zh) * 2014-12-29 2015-07-08 国家电网公司 一种用于电力交易数据仓库的质量管控方法及其管控系统
CN104933166A (zh) * 2015-06-29 2015-09-23 东方网力科技股份有限公司 一种数据库级联关系的自动维护方法及系统
CN107491454A (zh) * 2016-06-13 2017-12-19 百度在线网络技术(北京)有限公司 数据查询方法及装置
CN106682147A (zh) * 2016-12-22 2017-05-17 北京锐安科技有限公司 一种基于海量数据的查询方法及装置
CN109558427A (zh) * 2018-11-30 2019-04-02 上海找钢网信息科技股份有限公司 基于钢铁产业数据平台的智能查询系统及方法
CN111831684B (zh) * 2019-04-15 2024-04-05 北京沃东天骏信息技术有限公司 数据的查询方法、装置和计算机可读存储介质
CN110866028A (zh) * 2019-10-10 2020-03-06 微梦创科网络科技(中国)有限公司 一种sql指令生成方法及系统
CN110941629B (zh) * 2019-10-12 2023-09-29 中国平安财产保险股份有限公司 元数据处理方法、装置、设备及计算机可读存储介质
US10979525B1 (en) 2020-01-06 2021-04-13 International Business Machines Corporation Selective preemptive cache population based on data quality for rapid result retrieval
CN111414378B (zh) * 2020-03-17 2023-08-29 用友网络科技股份有限公司 一种基于GraphQL的类元数据框架
CN112052254B (zh) * 2020-08-12 2023-12-01 网宿科技股份有限公司 数据封装方法、电子设备及存储介质
CN112965989A (zh) * 2021-03-04 2021-06-15 浪潮云信息技术股份公司 一种主体分散数据查询及研判方法
CN113111239B (zh) * 2021-04-08 2024-03-29 北京联创新天科技有限公司 一种通用数据库操作方法、装置及其存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145162A (zh) * 2007-10-31 2008-03-19 金蝶软件(中国)有限公司 一种数据库动态查询的方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080065590A1 (en) * 2006-09-07 2008-03-13 Microsoft Corporation Lightweight query processing over in-memory data structures

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145162A (zh) * 2007-10-31 2008-03-19 金蝶软件(中国)有限公司 一种数据库动态查询的方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Andrew Trolsen.LINQ.《C#与.NET3.5高级程序设计(第4版)》.2009,第357-376页,第665-669页. *
一种支持模糊查询的LINQ动态查询方案;蒋冠雄、陈方剑;《计算机时代》;20120229(第2期);第28-31页 *

Also Published As

Publication number Publication date
CN102799644A (zh) 2012-11-28

Similar Documents

Publication Publication Date Title
CN102799644B (zh) 基于元数据的数据库动态查询系统和数据库动态查询方法
CN106934062B (zh) 一种查询elasticsearch的实现方法及系统
CN1146820C (zh) 数据库管理系统的动态修改
US5504885A (en) O-R gateway: a system for connecting object-oriented application programs and relational databases
US20160078084A1 (en) Method of Converting Query Plans to Native Code
CN105718593B (zh) 一种数据库查询优化方法及系统
US20110161352A1 (en) Extensible indexing framework using data cartridges
AU2007227766A1 (en) Extensible query language with support for rich data types
CA2519001A1 (en) System and method of data agnostic business intelligence query
CN105260403A (zh) 通用跨数据库访问方法
CN103942228A (zh) 规则引擎、计算方法、业务系统及调用方法
EP1913498A2 (en) Intelligent sql generation for persistent object retrieval
CN110019314B (zh) 基于数据项分析的动态数据封装方法、客户端和服务端
CN107491476B (zh) 一种适用于多种大数据管理系统的数据模型转换及查询分析方法
CN100397397C (zh) 基于关系数据库的xml数据存储与访问方法
Fegaras et al. Compile-time code generation for embedded data-intensive query languages
AU9010198A (en) Relational database coexistence in object oriented environments
US20100088685A1 (en) System and method for mapping a domain modeling language to a relational store
Jennings Professional ADO. NET 3.5 with LINQ and the Entity Framework
Galgonek et al. A comparison of approaches to accessing existing biological and chemical relational databases via SPARQL
Ataei et al. Managing structurally heterogeneous databases in software product lines
Seco et al. A common data manipulation language for nested data in heterogeneous environments
Hua et al. AQT—A Query Template for AutomationML
Robie XML processing and data integration with XQuery
US20220075778A1 (en) Transforming operations of a computer program for execution at a database

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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160202

Address after: 100094 Beijing City, North Road, Haidian District, No. 68, building 2, floor 2

Patentee after: You Pu Information Technology Co., Ltd of UFSOFT

Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park

Patentee before: UFIDA Software Co., Ltd.