System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 关系型数据库访问语句转换方法及应用系统技术方案_技高网

关系型数据库访问语句转换方法及应用系统技术方案

技术编号:39940032 阅读:7 留言:0更新日期:2024-01-08 22:29
本发明专利技术公开了一种关系型数据库访问语句转换方法及应用系统,该转换方法包括第一转换方法,第一转换方法被配置为:当应用程序的持久层框架中定义的任一单一数据库操作方法被调用时,获取基于该单一数控库操作方法发出的原始SQL语句;对原始SQL语句进行解析,以获得与原始数据库相对应的具有特定语法的特征语句,并获得该原始SQL语句中包含的基础信息;采用关系型数据库通用的标准语句对特征语句进行转换,以获得与该特征语句相对应的通用语句;采用该通用语句对原始SQL语句进行更新,以获得目标语句。本发明专利技术上述转换方法,不需要逐句对原始SQL语句进行手动修改,可以大大减少数据库切换后的维护工作量,提高效率,并降低出错的可能性。

【技术实现步骤摘要】

本专利技术涉及数据库切换,尤其涉及一种关系型数据库访问语句转换方法及应用系统


技术介绍

1、在应用程序的使用中,随着业务的发展和变化,数据库的切换和访问确实是一个常见的需求。例如,可能需要将原始的mysql数据库切换为达梦数据库,这可能是由于性能问题、数据安全问题、或者是业务需求发生了变化。然而,当数据库发生切换后,原有的访问语句可能无法正确地在新的数据库中执行。

2、因此,当应用程序中的数据库被切换后,需要对应用程序访问数据库的语句进行转换。现有的转换方法主要依赖于重新定义持久层框架(如mybatis)中的sql语句生成接口(如mapper接口),这需要手动修改和调整原有的sql语句,将它们转换为与新数据库兼容的语句。这种方法不仅耗时,而且容易出错。

3、因此,需要一种新的数据库访问语句转换方法。


技术实现思路

1、本专利技术的目的是提供一种能快速、高效转换应用程序与数据库交互的语句,以使得应用程序与切换后的数据库相适配的关系型数据库访问语句转换方法及应用系统。

2、为了实现上述目的,本专利技术公开了一种关系型数据库访问语句转换方法,用于应程序中数据库被切换后对目标数据库的访问,该转换方法包括第一转换方法,所述第一转换方法被配置为:

3、当应用程序的持久层框架中定义的任一单一数据库操作方法被调用时,获取基于该单一数控库操作方法发出的原始sql语句;

4、对原始sql语句进行解析,以获得与原始数据库相对应的具有特定语法的特征语句,并获得该原始sql语句中包含的基础信息,所述基础信息包括数据库表结构信息和操作参数信息;

5、采用关系型数据库通用的标准语句对所述特征语句进行转换,以获得与该特征语句相对应的通用语句;

6、采用该通用语句对所述原始sql语句进行更新,以获得目标语句,该目标语句用作所述持久层框架访问切换后的目标数据库的执行语句。

7、较佳地,从所述原始sql语句中解析出的特征语句包括mysql数据库特有的数据库操作语句,该数据库操作语句为on duplicate key update;与该数据库操作语句相对应的通用语句逻辑包括如下三项:查询重复数据、插入不重复数据以及修改重复数据。

8、较佳地,当不存在与当前所特征语句对应的所述通用语句时,在所述第一转换方法中配置与该特征语句相对应的与目标数据库相适配的替换语句。

9、较佳地,还包括第二转换方法,所述第二转换方法被配置为:

10、在当前应用程序的持久层框架中设置拦截器,并在所述拦截器中设置转换规则,所述转换规则用于将与原始数据库相对应的sql语句转换为与目标数据相对应的sql语句;

11、当所述拦截器拦截到所述持久层框架发出的与原始数据库相对应的sql语句后,通过所述转换规则对拦截到的sql语句进行转换,以获得与切换后的目标数据库进行交互目标语句。

12、较佳地,所述转换规则对所述sql语句的处理方法包括:

13、通过正则表达式查找所述sql语句中独属于原始数据库的引号符转换为与目标数据库相适配的引号符;

14、对所述sql语句进行语法分析,以生成若干sql片段;

15、查询每一所述sql片段中的关键字列,如果所述关键字列的列名上未有与所述目标数据库相适配的引号符,则为该关键字列的列名上添加相应的引号符;

16、获取含有独属于原始数据库的操作函数的sql片段,并将该sql片段中的操作函数转换为与目标数据库相对应的操作函数。

17、较佳地,如果sql片段中的操作函数为独属于m1ysql数据库的原始聚合函数group_concat,且该原始聚合函数具有多项逻辑参数,则提取并记录该原始聚合函数中的逻辑参数,并采用与目标数据库相对应的目标聚合函数替换该原始聚合函数;当所述所述目标聚合函数执行完成后,再根据记录的所述多项逻辑参数对目标数据库的操作做补充处理。

18、较佳地,所述持久层框架为mybatis框架。

19、本专利技术还公开一种应用系统,所述应用系统中的数据库由其中一种关系型数据库被切换为另一种关系型数据库,所述应用系统基于如上所述的关系型数据库访问语句转换方法运行。

20、本专利技术还公开另一种应用系统,其包括:

21、一个或多个处理器;

22、存储器;

23、以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的关系型数据库访问语句转换方法的指令。

24、本专利技术还公开一种计算机可读存储介质,其包括计算机程序,所述计算机程序可被处理器执行以完成如上所述的关系型数据库访问语句转换方法。

25、与现有技术相比,本专利技术上述技术方案公开的关系型数据库访问语句转换方法,用于在应用程序的数据库被切换后对目标数据库的访问。该方法通过解析原始sql语句,获取基础信息,并使用通用语句更新原始sql语句,进而生成目标语句。基于这种方法,不需要逐句对原始sql语句进行手动修改,可以大大减少数据库切换后的维护工作量,提高效率,并降低出错的可能性。

本文档来自技高网...

【技术保护点】

1.一种关系型数据库访问语句转换方法,用于应程序中数据库被切换后对目标数据库的访问,其特征在于,该转换方法包括第一转换方法,所述第一转换方法被配置为:

2.根据权利要求1所述的关系型数据库访问语句转换方法,其特征在于,从所述原始SQL语句中解析出的特征语句包括MySQL数据库特有的数据库操作语句,该数据库操作语句为ON DUPLICATE KEY UPDATE;与该数据库操作语句相对应的通用语句逻辑包括如下三项:查询重复数据、插入不重复数据以及修改重复数据。

3.根据权利要求1所述的关系型数据库访问语句转换方法,其特征在于,当不存在与当前所特征语句对应的所述通用语句时,在所述第一转换方法中配置与该特征语句相对应的与目标数据库相适配的替换语句。

4.根据权利要求1所述的关系型数据库访问语句转换方法,其特征在于,还包括第二转换方法,所述第二转换方法被配置为:

5.根据权利要求4所述的关系型数据库访问语句转换方法,其特征在于,所述转换规则对所述SQL语句的处理方法包括:

6.根据权利要求5所述的关系型数据库访问语句转换方法,其特征在于,如果SQL片段中的操作函数为独属于M1ySQL数据库的原始聚合函数group_concat,且该原始聚合函数具有多项逻辑参数,则提取并记录该原始聚合函数中的逻辑参数,并采用与目标数据库相对应的目标聚合函数替换该原始聚合函数;当所述所述目标聚合函数执行完成后,再根据记录的所述多项逻辑参数对目标数据库的操作做补充处理。

7.根据权利要求1所述的关系型数据库访问语句转换方法,其特征在于,所述持久层框架为MyBatis框架。

8.一种应用系统,所述应用系统中的数据库由其中一种关系型数据库被切换为另一种关系型数据库,其特征在于,所述应用系统基于如权利要求1至7任一项所述的关系型数据库访问语句转换方法运行。

9.一种应用系统,其特征在于,包括:

10.一种计算机可读存储介质,其特征在于,包括计算机程序,所述计算机程序可被处理器执行以完成如权利要求1至7任一项所述的关系型数据库访问语句转换方法。

...

【技术特征摘要】

1.一种关系型数据库访问语句转换方法,用于应程序中数据库被切换后对目标数据库的访问,其特征在于,该转换方法包括第一转换方法,所述第一转换方法被配置为:

2.根据权利要求1所述的关系型数据库访问语句转换方法,其特征在于,从所述原始sql语句中解析出的特征语句包括mysql数据库特有的数据库操作语句,该数据库操作语句为on duplicate key update;与该数据库操作语句相对应的通用语句逻辑包括如下三项:查询重复数据、插入不重复数据以及修改重复数据。

3.根据权利要求1所述的关系型数据库访问语句转换方法,其特征在于,当不存在与当前所特征语句对应的所述通用语句时,在所述第一转换方法中配置与该特征语句相对应的与目标数据库相适配的替换语句。

4.根据权利要求1所述的关系型数据库访问语句转换方法,其特征在于,还包括第二转换方法,所述第二转换方法被配置为:

5.根据权利要求4所述的关系型数据库访问语句转换方法,其特征在于,所述转换规则对所述sql语句的处理方法包括...

【专利技术属性】
技术研发人员:孙望万振华王颉李华董燕
申请(专利权)人:深圳开源互联网安全技术有限公司
类型:发明
国别省市:

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

1