CN109710220A - 关系型数据库查询方法、装置、设备及存储介质 - Google Patents
关系型数据库查询方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109710220A CN109710220A CN201811515122.9A CN201811515122A CN109710220A CN 109710220 A CN109710220 A CN 109710220A CN 201811515122 A CN201811515122 A CN 201811515122A CN 109710220 A CN109710220 A CN 109710220A
- Authority
- CN
- China
- Prior art keywords
- database
- data
- metadata
- relevant
- function
- 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
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种关系型数据库查询方法、装置、设备及存储介质。本实施例首先在检测到当前项目与数据库连接成功时,调用数据库管理系统功能来获取所述数据库的原始数据结果集;从原始数据结果集中读取所述数据库的元数据,基于所述元数据并通过所述数据库管理系统功能生成元数据模型;基于所述元数据模型创建构造查询函数;进而即使数据库结构发生变化,也不需要让程序员修改当前项目中的与数据库查询语句相关的源代码,直接调用所述构造查询函数即可实现对所述数据库进行查询,进而有效减少了程序员开发测试的工作量,同时也能够快速响应业务需求,提高用户对项目软件的体验度。
Description
技术领域
本发明涉及计算机信息技术领域,尤其涉及一种关系型数据库查询方法、装置、设备及存储介质。
背景技术
关系型数据库(Relational database)是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。标准数据查询语言SQL(Structured Query Language)就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。关系型数据库是由多张能互相联接的二维行列表格组成的数据库。因此,每建立一个关系型数据库,必须需要提前设计好表结构,当数据库因需求发生变化需要变更时,经常需要修改表结构,导致相应的查询逻辑需要修改,增加开发测试工作量,不能快速响应业务需求。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种关系型数据库查询方法、装置、设备及存储介质,旨在解决数据库结构发生变化时,程序员必须手动修改当前项目中的与数据库查询语句相关的源代码,影响程序员开发和测试的工作的效率的问题。
为实现上述目的,本发明提供一种关系型数据库查询方法,所述关系型数据库查询方法包括:
在检测到当前项目与数据库连接成功时,调用数据库管理系统功能来获取所述数据库的原始数据结果集;
从所述原始数据结果集中读取所述数据库的元数据,基于所述元数据并通过所述数据库管理系统功能生成元数据模型;
基于所述元数据模型创建构造查询函数;
调用所述构造查询函数对所述数据库进行查询。
优选地,所述在检测到当前项目与数据库连接成功时,调用数据库管理系统功能来获取所述数据库的原始数据结果集的步骤,包括:
在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader;
调用所述数据读取器SqlDataReader来读取所述数据库的原始数据结果集,所述原始数据结果集包含不同数据表的行数据。
优选地,所述在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader的步骤,包括;
在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader和数据集对象类DataSet;
所述从所述原始数据结果集中读取所述数据库的元数据,将所述元数据并通过所述数据库管理系统功能生成元数据模型的步骤,包括:
对所述DataSet类进行实例化,得到数据集容器;
从所述原始数据结果集中读取所述数据库的元数据;
将所述元数据填充至所述数据集容器中,以形成基类数据表;
所述基于所述元数据模型创建构造查询函数的步骤,包括:
基于所述数据集容器中的元数据生成构造查询函数,所述构造查询函数用于对所述基类数据表进行查询。
优选地,所述原始数据结果集包含不同数据表的行数据,其中,每条行数据具有不同的列属性,所述列属性至少包括原始标识名称、数据类型以及数据值;所述基类数据表的列属性至少包括键值对标识、数据类型和数据值,其中,所述键值对标识与所述数据库的原始标识名称和原始数据表相关联。
优选地,所述调用所述构造查询函数对所述数据库进行查询的步骤,具体包括:
在所述数据库的结构发生变化时,调用所述构造查询函数对所述基类数据表进行查询,以实现对所述数据库进行查询。
优选地,所述在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader和数据集对象类DataSet的步骤,包括:
在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader和数据集对象类DataSet,并从所述当前项目的源代码中的读取原始Sql查询语句;
所述调用所述构造查询函数对所述基类数据表进行查询,以实现对所述数据库进行查询的步骤,包括:
通过所述原始Sql查询语句对所述数据库进行查询,若返回的查询结果中包括预设错误提示,则判定所述数据库的结构发生变化,对所述Sql查询语句进行解析,提取查询目标关键字;
调用所述构造查询函数从所述基类数据表中对与所述查询目标关键字相关的数据进行查找。
优选地,所述调用所述构造查询函数从所述基类数据表中对与所述查询目标关键字相关的数据进行查找的步骤之后,包括;
对所述基类数据表中与所述查询目标关键字相关的数据对应的数据表进行展示。
此外,为实现上述目的,本发明还提出一种关系型数据库查询装置,所述装置包括:
获取模块,用于在检测到当前项目与数据库连接成功时,调用数据库管理系统功能来获取所述数据库的原始数据结果集;
生成模块,用于从所述原始数据结果集中读取所述数据库的元数据,基于所述元数据并通过所述数据库管理系统功能生成元数据模型;
构造模块,用于基于所述元数据模型创建构造查询函数;
查询模块,用于调用所述构造查询函数对所述数据库进行查询。
此外,为实现上述目的,本发明还提出一种用于关系型数据库查询的设备,所述用于关系型数据库查询的设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的关系型数据库查询程序,所述关系型数据库查询程序配置为实现如上所述的关系型数据库查询方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有关系型数据库查询程序,所述关系型数据库查询程序被处理器执行时实现如上所述关系型数据库查询方法的步骤。
本发明首先在检测到当前项目与数据库连接成功时,调用数据库管理系统功能来获取所述数据库的原始数据结果集;从原始数据结果集中读取所述数据库的元数据,基于所述元数据并通过所述数据库管理系统功能生成元数据模型;基于所述元数据模型创建构造查询函数;进而即使数据库结构发生变化,也不需要让程序员修改当前项目中的与数据库查询语句相关的源代码,直接调用所述构造查询函数即可实现对所述数据库进行查询,进而有效减少了程序员开发测试的工作量,同时也能够快速响应业务需求,提高用户对项目软件的体验度。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的用于关系型数据库查询的设备的结构示意图;
图2为本发明一种关系型数据库查询方法第一实施例的流程示意图;
图3为本发明一种关系型数据库查询方法第二实施例的流程示意图;
图4为本发明一种关系型数据库查询方法第三实施例的流程示意图;
图5为本发明一种关系型数据库查询装置的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的用于关系型数据库查询的设备示意图。
如图1所示,用于关系型数据库查询的设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口,网络接口用于和数据库服务器进行通讯连接。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。需要说明的是,图1中示出的结构并不构成对所述设备的限定,可以包括比图示更多或更少的部件,或者不同的部件布置。
如图1所示,所述存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及关系型数据库查询程序。
在图1所示的设备中,用户接口1003主要用于连接与用户的交互的设备,如键盘、显示屏等;本发明的用于关系型数据库查询的设备通过处理器1001调用存储器1005中存储的关系型数据库查询程序,并执行所述关系型数据库查询方法的步骤。
参照图2,图2为本发明提供的一种关系型数据库查询方法的第一实施例流程示意图,所述关系型数据库查询方法包括:
步骤S10:在检测到当前项目与数据库连接成功时,调用数据库管理系统来获取所述数据库的原始数据结果集。
需要说明的是,本实施例的执行主体为上述用于关系型数据库查询的设备的处理器。本实施的关系型数据库查询方法是一种通用式的数据库查询方法,即使在数据库的数据库表结构或者各数据包之间的结构发生变化,也可以通过本的实施例查询方法进行查询;并且即便使用者在使用当前项目软件时,不了解正在访问的数据库的任何信息,也可以通过本的实施例查询方法进行查询。
本实施例中的当前项目软件以基于C#面向对象程序语言编写的软件项目为例进行说明,所述数据库的版本以Sql Server关系型数据库为例进行说明。
可理解的是,对于关系型数据库Sql Server来说,一般与Sql Server进行连接的项目软件源代码中会涉及SqlClient的字段,在检测到所述当前项目软件的源代码中“using System.Data.SqlClient”字段代码生效时,说明当前项目软件已经和Sql Server关系型数据库成功连接,然后直接获取Sql Server数据库对应的数据库管理系统(DBMS,Database Management System),DBMS提供了数据定义语言DDL(Data DefinitionLanguage)功能和数据操作语言DML(Data Manipulation Language)功能。
在具体实现中,本实施例在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader;SqlDataReader属于DBMS提供的数据操作语言功能中的一个类,由于DBMS提供了提供数据操作语言DML功能,供用户实现对数据的追加、删除、更新、查询等操作,而SqlDataReader属于对数据进行查询的操作类。
调用数据读取器SqlDataReader来读取所述数据库的原始数据结果集(即数据在内存中的缓存),所述原始数据结果集包含不同的数据表(DataTable,即内存中数据的一张表)的行数据。
步骤S20:从所述原始数据结果集中读取所述数据库的元数据,基于所述元数据并通过所述数据库管理系统生成元数据模型。
可理解的是,由于已经和数据库成功连接,因此可以调用C#面向对象程序语言下的MetaData类来从所述原始数据结果集中读取所述数据库的元数据,不同元数据构成所述原始数据结果集中的一条行数据。
具体地,可通过所述MetaData类中的以下常用的函数来获取常用的元数据,例如调用getColumnCount()函数对数据库处理,返回原始数据结果集的列数和列属性;调用getColumnName(int index)返回序号为index的列名,序号从1开始;调用getColumnType(int index)获取指定列的数据类型。
从所述原始数据结果集中读取到的每条行数据(对应DataRow,即DataTable中的一行数据)具有不同的列属性(对应DataColumn,即DataTable中列的架构),所述列属性至少包括原始标识名称、数据类型以及数据值,这些为元数据。
可理解的是,DBMS提供了数据定义语言DDL功能,供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。DDL主要用于建立、修改数据库的库结构。因此本实施可通过DBMS建立一个元数据模型。
具体地,可以在内存中构建一个新的数据容器集,将得到的元数据送入这个新的数据容器集中,新的容器集中不涉及真实数据库的原有的数据表与数据表之间的关系、也不涉及一真实数据库的数据表中的数据与其他数据表中数据之间的关系,只存多行的该数据库的元数据,新的数据容器集会形成一个不同于原始数据库中新的数据结构,新的数据结构和元数据形成了元数据模型。
步骤S30:基于所述元数据模型创建构造查询函数;
可理解的是,在对数据库查询时,可以直接对新的数据容器集中的数据进行查询,由于元数据模型为不同于真实数据库中的关系的新的数据结构,因此所述当前项目的源代码文件中的原始查询语句不适用,必须基于元数据模型中新的数据结构来重新创建一个构造查询函数,新的构造查询函数的指针并不是指向真实数据库,而是指向的是元数据模型(即新的数据容器集),用于对所述新的数据容器集进行查询,而不是查询真实数据库中的某个实体数据表。
步骤S40:调用所述构造查询函数对所述数据库进行查询。
在具体实现中,当前项目在运行过程中与数据库进行交互时,如果原先的数据库结果发生变化,那么当前项目在运行源代码中的原始sql语句后返回的结果肯定会报错,如果报错的结果涉及“列名‘’无效”、“不支持关键字‘sever’”、或“‘’附近有语法错误”等表征sql语句与当前查找数据库不适用时,说明数据库结构发生变化,那么本实施例在碰到这类情况时,会直接调用步骤S30中的新的构造查询函数;
可理解的是,由于用户想对数据库中的对象A进行查询,但是由于数据库结构发生变化(对象A可能原本属于数据表a,由于数据库结构变化后对象a可能已经不属于数据表a,而属于数据表c),如果执行使用当前项目软件中的原查询代码(例如授权率语句:“select对象Afrom数据库.数据表a”)来对数据库的数据表a进行查找必定报错,但是开发人员修改当前项目软件中的原查询代码必定很耗时间;因此本实施例对应这类情况可以创建一个新的构造查询函数,例如新的构造查询函数可以是GetSelectDataSql()=“select对象Afrom新的数据容器集”,这样能够直接从新的数据容器集中查找出查询目标A。
本实施例首先在检测到当前项目与数据库连接成功时,调用数据库管理系统功能来获取所述数据库的原始数据结果集;从原始数据结果集中读取所述数据库的元数据,基于所述元数据并通过所述数据库管理系统功能生成元数据模型;基于所述元数据模型创建构造查询函数;进而即使数据库结构发生变化,也不需要让程序员修改当前项目中的与数据库查询语句相关的源代码,直接调用所述构造查询函数即可实现对所述数据库进行查询,进而有效减少了程序员开发测试的工作量,同时也能够快速响应业务需求,提高用户对项目软件的体验度。
进一步地,参考图3,基于上述图2所示的实施例,提出本发明关系型数据库查询方法的第二实施例。
本实施例中,所述步骤S10,具体包括:
步骤S101,在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader和数据集对象类DataSet,调用所述数据读取器SqlDataReader来读取所述数据库的原始数据结果集,所述原始数据结果集包含不同数据表的行数据。
可理解的是,DataSet类是基于C#面向对象语言开发的软件项目在其连接数据库时所使用的一种面向对象程序设计实现信息封装的基础类,DataSet是不依赖于数据库的独立数据集合,可以把DataSet类衍生的对象当成内存中的数据库。同时调用数据读取器SqlDataReader来读取所述数据库的原始数据结果集,其中,所述原始数据结果集包含不同的数据表的行数据。
相应地,所述步骤S20,具体包括:
步骤S201,对所述DataSet类进行实例化,得到数据集容器;
具体地,通过以下代码对所述DataSet类进行实例化:DataSet dast=newDataSet(),得到数据集容器dast;数据集容器dast与数据库相对独立的,即使断开数据链路,或者关闭数据库,数据集容器dast依然是可用的,dast可以描述复杂关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据(参见下文中的新的键值对描述),而且不再依赖于真实数据库的链路。
步骤S202,从所述原始数据结果集中读取所述数据库的元数据;
具体地,本实施例可以使用SqlCommand类,SqlCommand类衍生出的对象允许指定在数据库上执行的操作的类型,能够对数据库中的行数据执行增删改查操作命令。具体代码为:
SqlCommand cmd=new SqlCommand(Sql语句,数据库名称),表征实例化一个新的查询指令,所述新的查询指令用于读取所述数据库的元数据;
cmd.CommandType=type;给新的查询指令的操作类型赋值,以确定新的查询指令的操作类型;
SqlDataAdapter SDA=new SqlDataAdapter(cmd),实例化一个新的数据读取器SDA,SDA用于执行新的查询指令cmd;
步骤S203,将所述元数据填充至所述数据集容器中,以形成基类数据表,所述基类数据表的列属性至少包括赋予了新的键值对的标识、数据类型和数据值;
具体地,接上述步骤S202的代码,将所述元数据填充至所述数据集容器中,以形成基类数据表的代码为:
SDA.Fill(dast),数据读取器SDA具有SqlDataAdapter类的Fill函数功能,即调用Fill函数将读取到的所述数据库的元数据填入到新的数据集容器dast;最后得到返回的数据,代码如下:
return dast.Tables[row];
上述代码中dast.Tables表示所述数据集容器形成的基类数据表;row为一个变量,表征基类数据表的第row行,Tables[row]表示变量基类数据表的第row行的元数据。
可理解的是,数据读取器SDA会将读取到的元数据逐条写入新的数据集容器dast中,即每写入一条元数据,计算机系统的处理器会实时接收返回的已写入dast中的一行元数据,等到元数据全部写入到dast中,处理器会接收到写入dast中的全部元数据,进而形成了基类数据表,基类数据表不对应所述数据库中真实的数据表,不涉及真实的数据表与数据表之间的关联、也不涉及一真实数据表中的数据与其他真实数据表中数据之间的关系。
上述代码中的Tables[row]中的row为变量,Tables[row]表示基类数据表的第row行的元数据,所述基类数据表的一行元数据至少包括键值对的标识、数据类型和数据值;其中,其中,所述键值对标识同时与所述数据库的原始标识名称以及原始数据表相关联;所述键值对的标识用key_Table-ID表示,key_Table表示所述基类数据表的第row行的元数据对应在当前真实的数据库中数据表Table的标识编码,而ID表示所述基类数据表的第row行的元数据对应在当前真实的数据库中数据表Table中的标识,这里的当前真实的数据库可能是在数据库结构发生变化后的数据库,也可能是数据库结构没有发生变化的数据库。
本实施例针对所述基类数据表进行查询时,可创建一个新的构造查询函数,如新的构造查询函数为GetSelectDataSql()=“select对象Afrom基类数据表”,这样能够从基类数据表中查找出查询目标A。
在数据库结构发生变化时,调用所述构造查询函数对所述基类数据表进行查询,以实现对所述数据库进行查询。即使在数据库的数据库表结构或者各数据包之间的结构发生变化,也可以通过本的实施例查询方法对想要查找的内容进行查询;并且即便使用者在使用当前项目软件时,不了解正在访问的数据库的任何信息,也可以通过本的实施例查询方法进行数据库查询。
进一步地,参考图4,基于上述方法的第一实施例和第二实施例,提出本发明关系型数据库查询方法的第三实施例。
本实施例中,所述步骤S101,具体包括:
步骤S1011,在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader和数据集对象类DataSet,并从所述当前项目的源代码中的读取原始Sql查询语句;
相应地,所述步骤S40,具体包括:
步骤S41,通过所述原始Sql查询语句对所述数据库进行查询,若返回的查询结果中包括预设错误提示,则判定所述数据库的结构发生变化,对所述Sql查询语句进行解析,查询目标关键字;
可理解的是,当前项目在运行过程中与数据库进行交互时,如果原先的数据库结果发生变化,那么当前项目在运行源代码中的Sql查询语句后返回的结果肯定会报错,如果报错的结果涉及“列名‘’无效”、“不支持关键字‘sever’”、或“‘’附近有语法错误”等表征Sql语句与当前查找数据库不适用时,说明数据库结构发生变化,这时可对所述Sql查询语句进行解析,从所述Sql查询语句中提取查询目标关键字。以一个简单的Sql语句为例“select对象b from数据表B”,这时由于数据库结构发生变化,对象b可能不属于数据表B了,此时提取查询目标关键字“对象b”。
步骤S42,调用所述构造查询函数从所述基类数据表中对与所述查询目标关键字相关的数据进行查找。
可理解的是,由于在上述第二实施例中从数据库中读取的元数据已经全部写入所述基类数据表中,因此可直接调用所述构造查询函数从所述基类数据表中对与所述查询目标关键字相关的数据进行查找。
步骤S43,对所述基类数据表中与所述查询目标关键字相关的数据对应的数据表进行展示。
可理解的是,由于数据库结构发生变化,“对象b”当前在真实数据库中对应的数据表已经发生变化,那么在查找到与“对象b”相关的数据中必定包括新的键值对key_Table,即查找出与“对象b”相关的数据为所述基类数据表的第row行的元数据时,可以获取对应的新的键值对key_Table,进而能够获取“对象b”在结构发生变化的的当前真实的数据库中数据表Table的标识编码,进而能够确定查询目标“对象b”到底变更到真实数据库中的哪个数据表里。最后展示查询结果,项目软件的使用者也能够第一时间了解到相关的数据库的变化信息。
此外,参考图5,本发明实施例还提出一种关系型数据库查询装置,所述装置包括:
获取模块10,用于在检测到当前项目与数据库连接成功时,调用数据库管理系统功能来获取所述数据库的原始数据结果集;
生成模块20,用于从所述原始数据结果集中读取所述数据库的元数据,基于所述元数据并通过所述数据库管理系统功能生成元数据模型;
构造模块30,用于基于所述元数据模型创建构造查询函数;
查询模块40,用于调用所述构造查询函数对所述数据库进行查询。
可理解的是,本实施例的关系型数据库查询装置可以是一种用于进行关系型数据库查询的应用程序软件,并装载于所述用于关系型数据库查询的设备中,本实施例的关系型数据库查询装置的具体实施方式请参照上述关系型数据库查询方法实施例,本实施例在此不予赘述。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有关系型数据库查询程序,所述关系型数据库查询程序被处理器执行时实现如上所述关系型数据库查询方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种关系型数据库查询方法,其特征在于,所述关系型数据库查询方法包括:
在检测到当前项目与数据库连接成功时,调用数据库管理系统功能来获取所述数据库的原始数据结果集;
从所述原始数据结果集中读取所述数据库的元数据,基于所述元数据并通过所述数据库管理系统功能生成元数据模型;
基于所述元数据模型创建构造查询函数;
调用所述构造查询函数对所述数据库进行查询。
2.如权利要求1所述的方法,其特征在于,所述在检测到当前项目与数据库连接成功时,调用数据库管理系统功能来获取所述数据库的原始数据结果集的步骤,包括:
在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader;
调用所述数据读取器SqlDataReader来读取所述数据库的原始数据结果集,所述原始数据结果集包含不同数据表的行数据。
3.如权利要求2所述的方法,其特征在于,所述在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader的步骤,包括;
在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader和数据集对象类DataSet;
所述从所述原始数据结果集中读取所述数据库的元数据,将所述元数据并通过所述数据库管理系统功能生成元数据模型的步骤,包括:
对所述DataSet类进行实例化,得到数据集容器;
从所述原始数据结果集中读取所述数据库的元数据;
将所述元数据填充至所述数据集容器中,以形成基类数据表;
所述基于所述元数据模型创建构造查询函数的步骤,包括:
基于所述数据集容器中的元数据生成构造查询函数,所述构造查询函数用于对所述基类数据表进行查询。
4.如权利要求3所述的方法,其特征在于,所述原始数据结果集包含不同数据表的行数据,其中,每条行数据具有不同的列属性,所述列属性至少包括原始标识名称、数据类型以及数据值;所述基类数据表的列属性至少包括键值对标识、数据类型和数据值,其中,所述键值对标识与所述数据库的原始标识名称和原始数据表相关联。
5.如权利要求3-4任一项所述的方法,其特征在于,所述调用所述构造查询函数对所述数据库进行查询的步骤,具体包括:
在所述数据库的结构发生变化时,调用所述构造查询函数对所述基类数据表进行查询,以实现对所述数据库进行查询。
6.如权利要求4所述的方法,其特征在于,所述在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader和数据集对象类DataSet的步骤,包括:
在检测到当前项目与数据库连接成功时,获取数据读取器SqlDataReader和数据集对象类DataSet,并从所述当前项目的源代码中的读取原始Sql查询语句;
所述调用所述构造查询函数对所述基类数据表进行查询,以实现对所述数据库进行查询的步骤,包括:
通过所述原始Sql查询语句对所述数据库进行查询,若返回的查询结果中包括预设错误提示,则判定所述数据库的结构发生变化,并对所述Sql查询语句进行解析,提取查询目标关键字;
调用所述构造查询函数从所述基类数据表中对与所述查询目标关键字相关的数据进行查找。
7.如权利要求6方法,其特征在于,所述调用所述构造查询函数从所述基类数据表中对与所述查询目标关键字相关的数据进行查找的步骤之后,包括;
对所述基类数据表中与所述查询目标关键字相关的数据对应的数据表进行展示。
8.一种关系型数据库查询装置,其特征在于,所述装置包括:
获取模块,用于在检测到当前项目与数据库连接成功时,调用数据库管理系统功能来获取所述数据库的原始数据结果集;
生成模块,用于从所述原始数据结果集中读取所述数据库的元数据,基于所述元数据并通过所述数据库管理系统功能生成元数据模型;
构造模块,用于基于所述元数据模型创建构造查询函数;
查询模块,用于调用所述构造查询函数对所述数据库进行查询。
9.一种用于关系型数据库查询的设备,其特征在于,所述用于关系型数据库查询的设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的关系型数据库查询程序,所述关系型数据库查询程序配置为实现如权利要求1至7中任一项所述的关系型数据库查询方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有关系型数据库查询程序,所述关系型数据库查询程序被处理器执行时实现如权利要求1至7中任一项所述关系型数据库查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811515122.9A CN109710220B (zh) | 2018-12-12 | 2018-12-12 | 关系型数据库查询方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811515122.9A CN109710220B (zh) | 2018-12-12 | 2018-12-12 | 关系型数据库查询方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710220A true CN109710220A (zh) | 2019-05-03 |
CN109710220B CN109710220B (zh) | 2023-08-22 |
Family
ID=66256221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811515122.9A Active CN109710220B (zh) | 2018-12-12 | 2018-12-12 | 关系型数据库查询方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710220B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209694A (zh) * | 2019-05-20 | 2019-09-06 | 北京互金新融科技有限公司 | 数据处理方法及装置 |
CN110928875A (zh) * | 2019-10-16 | 2020-03-27 | 中科驭数(北京)科技有限公司 | 关系型数据库管理系统中的元组排序方法、查询方法及装置 |
CN111045724A (zh) * | 2019-12-11 | 2020-04-21 | 广州品唯软件有限公司 | 调用链信息的查询方法、装置和可读存储介质 |
WO2020229900A1 (en) * | 2019-05-10 | 2020-11-19 | International Business Machines Corporation | Service management in a dbms |
CN114443913A (zh) * | 2022-04-06 | 2022-05-06 | 创智和宇信息技术股份有限公司 | 基于元数据多函数多条件的自定义查询方法、系统及介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549163A (zh) * | 2003-05-15 | 2004-11-24 | 深圳市中兴通讯股份有限公司南京分公 | 一种跨平台数据库查询方法 |
CN1786950A (zh) * | 2004-12-06 | 2006-06-14 | 国际商业机器公司 | 处理抽象查询的方法和系统 |
CN101183371A (zh) * | 2007-12-12 | 2008-05-21 | 中兴通讯股份有限公司 | 一种快速完成大数据处理的方法和报表系统 |
CN101593203A (zh) * | 2009-05-12 | 2009-12-02 | 用友软件股份有限公司 | 带有前处理和后处理的数据库复合查询系统及方法 |
CN101639776A (zh) * | 2009-09-07 | 2010-02-03 | 陈小青 | 一种数据库访问和集成方法及其系统 |
CN102004742A (zh) * | 2009-09-01 | 2011-04-06 | 上海杉达学院 | 多层数据库访问结构 |
CN102346774A (zh) * | 2011-09-26 | 2012-02-08 | 深圳市信游天下网络科技有限公司 | 一种数据库操作方法及装置 |
CN103593443A (zh) * | 2013-11-18 | 2014-02-19 | 南京新模式软件集成有限公司 | 一种电子文件元数据扩展的方法 |
CN106484378A (zh) * | 2015-08-28 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种无落地的数据处理方法及装置 |
CN106708946A (zh) * | 2016-11-25 | 2017-05-24 | 国云科技股份有限公司 | 一种通用api的表查询方法 |
-
2018
- 2018-12-12 CN CN201811515122.9A patent/CN109710220B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549163A (zh) * | 2003-05-15 | 2004-11-24 | 深圳市中兴通讯股份有限公司南京分公 | 一种跨平台数据库查询方法 |
CN1786950A (zh) * | 2004-12-06 | 2006-06-14 | 国际商业机器公司 | 处理抽象查询的方法和系统 |
CN101183371A (zh) * | 2007-12-12 | 2008-05-21 | 中兴通讯股份有限公司 | 一种快速完成大数据处理的方法和报表系统 |
CN101593203A (zh) * | 2009-05-12 | 2009-12-02 | 用友软件股份有限公司 | 带有前处理和后处理的数据库复合查询系统及方法 |
CN102004742A (zh) * | 2009-09-01 | 2011-04-06 | 上海杉达学院 | 多层数据库访问结构 |
CN101639776A (zh) * | 2009-09-07 | 2010-02-03 | 陈小青 | 一种数据库访问和集成方法及其系统 |
CN102346774A (zh) * | 2011-09-26 | 2012-02-08 | 深圳市信游天下网络科技有限公司 | 一种数据库操作方法及装置 |
CN103593443A (zh) * | 2013-11-18 | 2014-02-19 | 南京新模式软件集成有限公司 | 一种电子文件元数据扩展的方法 |
CN106484378A (zh) * | 2015-08-28 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种无落地的数据处理方法及装置 |
CN106708946A (zh) * | 2016-11-25 | 2017-05-24 | 国云科技股份有限公司 | 一种通用api的表查询方法 |
Non-Patent Citations (1)
Title |
---|
彭世瑜: "C#编程-69:DataReader和DataSet读取数据库内容示例", pages 1 - 3, Retrieved from the Internet <URL:https://blog.csdn.net/mouday/article/details/81049180> * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020229900A1 (en) * | 2019-05-10 | 2020-11-19 | International Business Machines Corporation | Service management in a dbms |
GB2597201A (en) * | 2019-05-10 | 2022-01-19 | Ibm | Service management in a DBMS |
GB2597201B (en) * | 2019-05-10 | 2022-07-20 | Ibm | Service management in a DBMS |
CN110209694A (zh) * | 2019-05-20 | 2019-09-06 | 北京互金新融科技有限公司 | 数据处理方法及装置 |
CN110928875A (zh) * | 2019-10-16 | 2020-03-27 | 中科驭数(北京)科技有限公司 | 关系型数据库管理系统中的元组排序方法、查询方法及装置 |
CN111045724A (zh) * | 2019-12-11 | 2020-04-21 | 广州品唯软件有限公司 | 调用链信息的查询方法、装置和可读存储介质 |
CN114443913A (zh) * | 2022-04-06 | 2022-05-06 | 创智和宇信息技术股份有限公司 | 基于元数据多函数多条件的自定义查询方法、系统及介质 |
CN114443913B (zh) * | 2022-04-06 | 2022-06-07 | 创智和宇信息技术股份有限公司 | 基于元数据多函数多条件的自定义查询方法、系统及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109710220B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831753B2 (en) | Query plan generation and execution in a relational database management system with a temporal-relational database | |
CN109710220A (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
US11366856B2 (en) | System and method for updating target schema of graph model | |
US9305057B2 (en) | Extensible indexing framework using data cartridges | |
US11354284B2 (en) | System and method for migration of a legacy datastore | |
US7814045B2 (en) | Semantical partitioning of data | |
US9229971B2 (en) | Matching data based on numeric difference | |
US9805137B2 (en) | Virtualizing schema relations over a single database relation | |
US7831614B2 (en) | System and method for generating SQL using templates | |
CN106294695A (zh) | 一种面向实时大数据搜索引擎的实现方法 | |
CN107291471B (zh) | 一种支持可定制化数据采集的元模型框架系统 | |
US11487742B2 (en) | Consistency checks between database systems | |
US11803550B2 (en) | Workload-aware column imprints | |
US10691691B2 (en) | Iterative evaluation of data through SIMD processor registers | |
CN117421302A (zh) | 一种数据处理方法及相关设备 | |
US9135302B2 (en) | Query rewrite with a nested materialized view | |
US20230141190A1 (en) | Late Materialization of Queried Data in Database Cache | |
CN114238374A (zh) | 数据查询方法、装置、服务器和存储介质 | |
US20200320069A1 (en) | Hybrid compilation framework for arbitrary ad-hoc imperative functions in database queries | |
CN115952203B (zh) | 数据查询方法、设备、系统及存储介质 | |
US20240028594A1 (en) | Query refactoring framework | |
CN117131027A (zh) | 数据质量检测方法、装置、终端设备以及存储介质 | |
CN118012889A (zh) | 向量的确定方法及装置、存储介质及电子装置 | |
CN116204598A (zh) | 基于Java全自动的对象关系映射方法、系统、设备及存储介质 | |
CN117609271A (zh) | 一种基于sql解析的中间件统一查询方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |