System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种自动适配多种数据库语法的方法及应用技术_技高网

一种自动适配多种数据库语法的方法及应用技术

技术编号:42833200 阅读:25 留言:0更新日期:2024-09-24 21:06
本申请公开了一种自动适配多种数据库语法的方法,涉及数据库技术领域,所述方法包括:对多种数据库类型的数据库语句设计统一的标签进行封装,得到包含所述标签的第一数据;根据当前数据库连接属性确定相应的数据库类型,基于所述数据库类型从预设翻译器库中选取对应的翻译器,并通过所述翻译器将所述第一数据对应的第一语法的数据库语句转换为第二语法的数据库语句;根据所述第二语法的数据库语句生成第二数据,并将所述第二数据替换所述第一数据,输出所述第二数据。其可以解决多种数据库的分别适配开发导致工作效率低以及软件复杂性增加的问题。

【技术实现步骤摘要】

本专利技术涉及数据库,更具体的,涉及一种自动适配多种数据库语法的方法、一种自动适配多种数据库语法的装置、一种电子设备以及一种计算机可读存储介质。


技术介绍

1、软件信息系统基本都会使用到数据库,数据库的选用往往需根据用户的要求来定,是否采用商业数据库、开源数据库或国产数据库,而且一个成熟的软件产品,为了适应各种场景,也需要支持多种数据库类型。因此软件系统要求能同时支持多种数据库,根据要求切换。不同数据库产品其语法会有部分差异,软件系统需对每种进行适配。

2、现有mybatis和mybatis+框架,解决数据库适配的方案是,使用不同的databaseid来标识不同数据库,如“mysql”,”oracle”,”dm”,“sqlserver”等,在xml文件中,为每种数据库单独定义sql语句。即有语法差异的sql语句需要重复定义多条并标注databaseid属性。

3、现有方案需要所有开发人员熟悉各个数据库的语法特点,开发较为冗余繁琐,且代码无法复用,开发效率较低。且如要支持一种新数据库,所有相关代码都要重新编写一遍,尤其在应用的业务软件、代码使用不同的版本时,开发效率低且人力消耗大。


技术实现思路

1、针对现有技术的至少一个缺陷或改进需求,本专利技术提供了一种自动适配多种数据库语法的方法及应用,用于解决上述相关技术在应对不同的数据库产品时需要针对每种数据库的语法分别进行适配而导致增大工作量且开发工作效率低下的问题。

2、为实现上述目的,按照本专利技术的第一个方面,提供了一种自动适配多种数据库语法的方法,包括:对多种数据库类型的数据库语句设计统一的标签进行封装,得到包含所述标签的第一数据;根据当前数据库连接属性确定相应的数据库类型,基于所述数据库类型从预设翻译器库中选取对应的翻译器,并通过所述翻译器将所述第一数据对应的第一语法的数据库语句转换为第二语法的数据库语句;根据所述第二语法的数据库语句生成第二数据,并将所述第二数据替换所述第一数据,输出所述第二数据。

3、在第一方面的一些可能的实现方式中,所述对多种数据库类型的数据库语句设计统一的标签进行封装,包括:获取所述多种数据库类型的数据库语句的差异点,根据所述差异点设计所述多种数据库类型统一的所述标签。

4、在第一方面的一些可能的实现方式中,所述基于所述数据库类型从预设翻译器库中选取对应的翻译器之前,还包括:为每种数据库类型开发标签翻译代码作为翻译器,并建立所述翻译器和所述数据库类型的映射关系,以得到所述预设翻译器库。

5、在第一方面的一些可能的实现方式中,所述对多种数据库类型的数据库语句设计统一的标签进行封装,得到包含所述标签的第一数据,包括:配置映射文件将所述标签嵌入所述数据库语句;系统启动时扫描加载所述映射文件,得到包含所述标签的所述第一数据。

6、第二方面,本申请实施例还提供一种自动适配多种数据库语法的装置,包括:标签设计模块,用于对多种数据库类型的数据库语句设计统一的标签进行封装,得到包含所述标签的第一数据;数据翻译模块,用于根据当前数据库连接属性确定相应的数据库类型,基于所述数据库类型从预设翻译器库中选取对应的翻译器,并通过所述翻译器将所述第一数据对应的第一语法的数据库语句转换为第二语法的数据库语句;数据替换模块,用于根据所述第二语法的数据库语句生成第二数据,并将所述第二数据替换所述第一数据,输出所述第二数据。

7、在第二方面的一些可能的实现方式中,所述标签设计模块具体用于:获取所述多种数据库类型的数据库语句的差异点,根据所述差异点设计所述多种数据库类型统一的所述标签。

8、在第二方面的一些可能的实现方式中,所述自动适配多种数据库语法的装置还包括翻译器模块,用于为每种数据库类型开发标签翻译代码作为翻译器,并建立所述翻译器和所述数据库类型的映射关系,以得到所述预设翻译器库。

9、在第二方面的一些可能的实现方式中,所述标签设计模块具体用于:配置映射文件将所述标签嵌入所述数据库语句;系统启动时扫描加载所述映射文件,得到包含所述标签的所述第一数据。

10、按照本专利技术的第三个方面,还提供了一种电子设备,其包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述计算机程序被所述处理单元执行时,使得所述处理单元执行上述中任一项实施例所述方法的步骤。

11、按照本专利技术的第四个方面,还提供了一种计算机可读存储介质,其存储有可由访问认证设备执行的计算机程序,当所述计算机程序在访问认证设备上运行时,使得所述访问认证设备执行上述中任一项实施例所述方法的步骤。

12、总体而言,通过本专利技术所构思的以上技术方案与现有技术相比,至少能够取得下列有益效果:

13、通过对多种数据库类型的数据库语句设计统一的标签进行封装,在确定数据库类型后选取对应的翻译器将原数据库的语法转换成当前数据库的语法,通过这样的方式一次编写即可自动适配多种数据库,无需分别编写多种数据库代码,增加新数据库支持也无需改动代码,能够避免多种数据库的重复适配开发工作,避免软件发布后的频繁修改以及适配多种数据库的硬编码造成的软件复杂性增加,提升了系统灵活扩展新数据库类型的能力。

本文档来自技高网...

【技术保护点】

1.一种自动适配多种数据库语法的方法,其特征在于,包括:

2.根据权利要求1所述的自动适配多种数据库语法的方法,其特征在于,所述对多种数据库类型的数据库语句设计统一的标签进行封装,包括:

3.根据权利要求1所述的自动适配多种数据库语法的方法,其特征在于,所述基于所述数据库类型从预设翻译器库中选取对应的翻译器之前,还包括:

4.根据权利要求1所述的自动适配多种数据库语法的方法,其特征在于,所述对多种数据库类型的数据库语句设计统一的标签进行封装,得到包含所述标签的第一数据,包括:

5.一种自动适配多种数据库语法的装置,其特征在于,包括:

6.根据权利要求5所述自动适配多种数据库语法的装置,其特征在于,所述标签设计模块具体用于:获取所述多种数据库类型的数据库语句的差异点,根据所述差异点设计所述多种数据库类型统一的所述标签。

7.根据权利要求5所述的自动适配多种数据库语法的装置,其特征在于,还包括翻译器模块,用于为每种数据库类型开发标签翻译代码作为翻译器,并建立所述翻译器和所述数据库类型的映射关系,以得到所述预设翻译器库。

8.根据权利要求5所述的自动适配多种数据库语法的装置,其特征在于,所述标签设计模块具体用于:配置映射文件将所述标签嵌入所述数据库语句;系统启动时扫描加载所述映射文件,得到包含所述标签的所述第一数据。

9.一种电子设备,其特征在于,包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述计算机程序被所述处理单元执行时,使得所述处理单元执行权利要求1-4中任一项所述方法的步骤。

10.一种计算机可读存储介质,其特征在于,其存储有可由访问认证设备执行的计算机程序,当所述计算机程序在访问认证设备上运行时,使得所述访问认证设备执行权利要求1-4中任一项所述方法的步骤。

...

【技术特征摘要】

1.一种自动适配多种数据库语法的方法,其特征在于,包括:

2.根据权利要求1所述的自动适配多种数据库语法的方法,其特征在于,所述对多种数据库类型的数据库语句设计统一的标签进行封装,包括:

3.根据权利要求1所述的自动适配多种数据库语法的方法,其特征在于,所述基于所述数据库类型从预设翻译器库中选取对应的翻译器之前,还包括:

4.根据权利要求1所述的自动适配多种数据库语法的方法,其特征在于,所述对多种数据库类型的数据库语句设计统一的标签进行封装,得到包含所述标签的第一数据,包括:

5.一种自动适配多种数据库语法的装置,其特征在于,包括:

6.根据权利要求5所述自动适配多种数据库语法的装置,其特征在于,所述标签设计模块具体用于:获取所述多种数据库类型的数据库语句的差异点,根据所述差异点设计所述多种数据库类型统一的所述标签。

7.根据权利要求...

【专利技术属性】
技术研发人员:孙含福余道敏黄晓艳毕秀
申请(专利权)人:武汉虹信技术服务有限责任公司
类型:发明
国别省市:

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

1