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

一种用于数据库数据交互的数据库适配方法和系统技术方案

技术编号:43624600 阅读:13 留言:0更新日期:2024-12-11 15:04
公开了一种用于数据库数据交互的数据库适配方法和系统,首先获取待数据交互的源数据库的数据库类型,并依据数据库类型获取源数据库的数据库实例生成方式和SQL处理器;然后生成与源数据库进行数据交互的连接实例;再通过预设的拦截器拦截源数据库进行数据交互时的SQL操作,并检测SQL操作中每个SQL语句与目标数据库不同的数据库关键字和数据库函数;最后对SQL操作中不同的数据库关键字和数据库函数进行替换,并按替换后的SQL操作对目标数据库进行操作,以完成数据交互。由于对类型不匹配的数据库,通过替换SQL语句中不同数据库关键字和数据库函数方式实现数据交互,进而实现系统数据库的适配,不但减免人工操作,还能大大提高数据交互的工作效率。

【技术实现步骤摘要】

本申请涉及数据库数据管理,具体涉及一种用于数据库数据交互的数据库适配方法和系统


技术介绍

1、现阶段,在对计算软件系统进行项目交付时,经常会遇到客户的数据库和软件系统所依赖的数据库类型不一致的情况,此时都需要根据客户的数据库类型重新调整系统的数据库连接方式和sql语句,该方式不但耗时,且容易出现错改、漏改等情况。并且对接到其它项目时,有可能还需要重复同样的工作。因此,需要设计一种较通用的数据库适配方法,来兼容和适配不同的数据库。


技术实现思路

1、本专利技术主要解决的技术问题是如何适配和兼容不同类型的数据库,以实现数据的正常交互。

2、根据第一方面,一种实施例中提供一种用于数据库数据交互的数据库适配方法,包括:

3、获取待数据交互的源数据库的数据库类型;

4、依据数据库类型获取所述源数据库的数据库实例生成方式和sql处理器;

5、生成与所述源数据库进行数据交互的连接实例;

6、通过预设的拦截器拦截所述源数据库进行数据交互时的sql操作;

7、检测所述sql操作中每个sql语句与目标数据库不同的数据库关键字和/或数据库函数;

8、对所述sql操作中不同的数据库关键字和/或数据库函数进行替换,并按替换后的sql操作对目标数据库进行操作,以完成从所述源数据库向所述目标数据库的数据交互。

9、一实施例中,所述获取待数据交互的源数据库的数据库类型,包括:

10、根据调用所述源数据库的nacos配置来动态获取所述源数据库的类型;

11、所述源数据库的类型包括mysql数据库;

12、所述目标数据库的类型为达梦数据库或oceanbase数据库。

13、一实施例中,所述依据数据库类型获取所述源数据库的数据库实例生成方式和sql处理器,包括:

14、应用数据源实例工厂根据数据库实例生成方法和/或数据池连接参数,生成所述源数据库的连接实例;

15、所述数据池连接参数包括数据库连接url、数据库连接端口、数据库名、数据库连接用户名、数据库连接密码、数据库类型、数据库驱动名、连接池初始化大小、连接池最大数量和/或连接池最小数量。

16、一实施例中,所述检测所述sql操作中每个所述sql语句与目标数据库不同的数据库关键字和/或数据库函数,包括:

17、通过调用链的方式逐个检查所述sql语句中与所述目标数据库不同的数据库关键字或者数据库函数;

18、所述数据库关键字和/或数据库函数包括:`、concat、date_add、date_sub、date_format、str_to_date、ifnull和/或now()。

19、一实施例中,所述对所述sql操作中不同的数据库关键字和/或数据库函数进行替换,并按替换后的sql操作对目标数据库进行操作,包括:

20、当没有匹配到需要替换的所述数据库关键字和/或所述数据库函数时直接跳过;

21、当匹配到需要替换的数据库关键字或数据库函数时,通过调用链的方式按照每个数据库关键字和数据库函数的同步,来实现所述sql语句的替换;

22、根据替换后的所述sql语句重新封装数据库操作对象,完成对目标数据库的操作。

23、一实施例中,所述通过预设的拦截器拦截所述源数据库进行数据交互时的sql操作,包括:

24、预设的所述拦截器包括mybatis拦截器;

25、所述sql操作包括对数据库的查询操作和/或对数据库数据的修改操作。

26、如权利要求1所述的数据库适配方法,其特征在于,所述数据库实例生成方式包括mysql实例生成方式、达梦数据库生成方式和/或oceanbase数据库生成方式。

27、根据第二方面,一种实施例中提供一种计算机可读存储介质,所述介质上存储有计算机程序,所述计算机程序能够被处理器执行以实现如第一方面所述的数据库适配方法。

28、根据第三方面,一种实施例中提供一种计算机程序产品,包括计算机程序和/或指令,所述计算机程序和/或指令被处理器执行时实现第一方面所述的数据库适配方法。

29、根据第四方面,一种实施例中提供一种用于数据库数据交互的数据库适配系统,其特征在于,用于应用如第一方面所述的数据库适配方法,所述数据库适配系统包括:

30、类型获取单元,用于获取待数据交互的源数据库的数据库类型;

31、参数获取单元,用于依据数据库类型获取所述源数据库的数据库实例生成方式和sql处理器;

32、实例获取单元,用于生成与所述源数据库进行数据交互的连接实例;

33、拦截单元,用于通过预设的拦截器拦截所述源数据库进行数据交互时的sql操作;

34、差异检测单元,用于检测所述sql操作中每个所述sql语句与目标数据库不同的数据库关键字和/或数据库函数;

35、替换执行单元,用于对所述sql操作中不同的数据库关键字和/或数据库函数进行替换,并按替换后的sql操作对目标数据库进行操作,以完成从所述源数据库向所述目标数据库的数据交互。

36、据上述实施例的数据库适配方法,由于对类型不匹配的数据库,通过替换sql语句中不同数据库关键字和数据库函数方式实现数据交互,进而实现系统数据库的适配,不但减免人工操作,还能大大提高数据交互的工作效率。

本文档来自技高网...

【技术保护点】

1.一种用于数据库数据交互的数据库适配方法,其特征在于,包括:

2.如权利要求1所述的数据库适配方法,其特征在于,所述获取待数据交互的源数据库的数据库类型,包括:

3.如权利要求1所述的数据库适配方法,其特征在于,所述依据数据库类型获取所述源数据库的数据库实例生成方式和SQL处理器,包括:

4.如权利要求1所述的数据库适配方法,其特征在于,所述检测所述SQL操作中每个所述SQL语句与目标数据库不同的数据库关键字和/或数据库函数,包括:

5.如权利要求4所述的数据库适配方法,其特征在于,所述对所述SQL操作中不同的数据库关键字和/或数据库函数进行替换,并按替换后的SQL操作对目标数据库进行操作,包括:

6.如权利要求1所述的数据库适配方法,其特征在于,所述通过预设的拦截器拦截所述源数据库进行数据交互时的SQL操作,包括:

7.如权利要求1所述的数据库适配方法,其特征在于,所述数据库实例生成方式包括Mysql实例生成方式、达梦数据库生成方式和/或OceanBase数据库生成方式。

8.一种计算机可读存储介质,其特征在于,所述介质上存储有计算机程序,所述计算机程序能够被处理器执行以实现如权利要求1-7中任一项所述的数据库适配方法。

9.一种计算机程序产品,包括计算机程序和/或指令,其特征在于,所述计算机程序和/或指令被处理器执行时实现权利要求1-7中任一项所述的数据库适配方法。

10.一种用于数据库数据交互的数据库适配系统,其特征在于,用于应用如权利要求1至7中任一项所述的数据库适配方法,所述数据库适配系统包括:

...

【技术特征摘要】

1.一种用于数据库数据交互的数据库适配方法,其特征在于,包括:

2.如权利要求1所述的数据库适配方法,其特征在于,所述获取待数据交互的源数据库的数据库类型,包括:

3.如权利要求1所述的数据库适配方法,其特征在于,所述依据数据库类型获取所述源数据库的数据库实例生成方式和sql处理器,包括:

4.如权利要求1所述的数据库适配方法,其特征在于,所述检测所述sql操作中每个所述sql语句与目标数据库不同的数据库关键字和/或数据库函数,包括:

5.如权利要求4所述的数据库适配方法,其特征在于,所述对所述sql操作中不同的数据库关键字和/或数据库函数进行替换,并按替换后的sql操作对目标数据库进行操作,包括:

6.如权利要求1所述的数据库适配方法,其特征在于,...

【专利技术属性】
技术研发人员:请求不公布姓名请求不公布姓名
申请(专利权)人:上海众安信科信息技术服务有限公司
类型:发明
国别省市:

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

1