CN117235107A - 数据访问处理方法、装置、电子设备及存储介质 - Google Patents

数据访问处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117235107A
CN117235107A CN202311490491.8A CN202311490491A CN117235107A CN 117235107 A CN117235107 A CN 117235107A CN 202311490491 A CN202311490491 A CN 202311490491A CN 117235107 A CN117235107 A CN 117235107A
Authority
CN
China
Prior art keywords
database
error code
driver
application program
access
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
Application number
CN202311490491.8A
Other languages
English (en)
Other versions
CN117235107B (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.)
Hundsun Technologies Inc
Original Assignee
Hundsun Technologies Inc
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 Hundsun Technologies Inc filed Critical Hundsun Technologies Inc
Priority to CN202311490491.8A priority Critical patent/CN117235107B/zh
Publication of CN117235107A publication Critical patent/CN117235107A/zh
Application granted granted Critical
Publication of CN117235107B publication Critical patent/CN117235107B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请提供了一种数据访问处理方法、装置、电子设备及存储介质,应用于应用程序,应用程序中与错误码相关的程序段基于第一数据库的错误码规则编写,该方法包括:获取数据库访问语句;根据数据库访问语句,从第二数据库获取数据库访问结果;若访问结果中包括第一错误码,则确定第一错误码在第一数据库中对应的第二错误码;根据第二错误码,确定应用程序的响应结果。当访问结果中包括第一错误码时,则可以确定在应用程序的执行过程中出现了第一数据库与第二数据库的错误码不一致的情况,从而能够确定第一错误码在第一数据库中对应的第二错误码,实现了应用程序对所有类型的数据库的正常访问,提高了应用程序的复用率。

Description

数据访问处理方法、装置、电子设备及存储介质
技术领域
本申请涉及数据库处理技术领域,具体而言,涉及一种数据访问处理方法、装置、电子设备及存储介质。
背景技术
随着技术的发展和业务需求的变化,研发人员需要将现有的数据库替换为性能更加优越以及更加适合业务需求的数据库,从而提高研发效率。在对数据库进行更换时,难免遇到数据库抛出异常的场景,为了对数据库抛出的异常进行捕获和处理,通常采取错误码作为数据库异常的分类标识。但是,对于不同的数据库来说,其抛出的错误码并不是完全相同的,因此,需要对不同数据库异常时抛出的错误码进行映射。
现有技术中,提出了基于Spring框架的错误码转换方法,可以将底层数据错误码(如JDBC错误码、Hibernate错误码等)转换为Spring框架定义的DataAccessException异常类,从而实现不同数据库之间的错误码映射。
但是,现有的基于Spring框架的错误码转换方法无法适用于所有的数据库,因此,在应用时具有一定的局限性。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种数据访问处理方法、装置、电子设备及存储介质,以解决现有技术中错误码转换方法存在局限性的问题。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请一实施例提供了一种数据访问处理方法,应用于应用程序,所述应用程序中与错误码相关的程序段基于第一数据库的错误码规则编写,所述方法包括:
获取数据库访问语句,所述数据库访问语句用于对第二数据库进行访问;
根据所述数据库访问语句,从所述第二数据库获取数据库访问结果;
若所述访问结果中包括第一错误码,则确定所述第一错误码在所述第一数据库中对应的第二错误码;
根据所述第二错误码,确定所述应用程序的响应结果。
作为一种可能的实现方式,所述根据所述数据库访问语句,从所述第二数据库获取数据库访问结果,包括:
将所述数据库访问语句发送至错误码映射驱动程序,并经由所述错误码映射驱动程序从所述第二数据库获取数据访问结果。
作为一种可能的实现方式,所述经由所述错误码映射驱动程序从所述第二数据库获取数据访问结果,包括:
经由所述错误码映射驱动程序将所述数据库访问语句发送至所述第二数据库的数据库驱动程序,并由所述第二数据库的数据库驱动程序将所述数据库访问语句发送至所述第二数据库的内核中进行处理并返回所述数据访问结果。
作为一种可能的实现方式,所述确定所述第一错误码在所述第一数据库中对应的第二错误码,包括:
根据所述第一数据库与第二数据库的错误码映射信息,确定所述第一错误码在所述第一数据库中对应的第二错误码。
作为一种可能的实现方式,所述根据所述第一数据库与第二数据库的错误码映射信息,确定所述第一错误码在所述第一数据库中对应的第二错误码,包括:
由错误码映射驱动程序捕获所述第二数据库的数据库驱动程序输出的所述第一错误码,并由所述错误码映射驱动程序从预先创建的错误码映射表中查找所述第一错误码对应的所述第二错误码。
作为一种可能的实现方式,所述由错误码映射驱动程序捕获所述第二数据库的数据库驱动程序输出的所述第一错误码,包括:
由所述错误码映射驱动程序从所述第二数据库的数据库驱动程序对应的多个输出接口捕获所述第一错误码。
作为一种可能的实现方式,所述获取数据库访问语句之前,还包括:
根据所述第二数据库的数据库驱动程序中的接口信息,创建与所述接口信息对应的代理对象;
根据所述代理对象,创建所述错误码映射驱动程序。
第二方面,本申请另一实施例提供了一种数据访问处理装置,应用于应用程序,所述应用程序中与错误码相关的程序段基于第一数据库的错误码规则编写,所述装置包括:
第一获取模块,用于获取数据库访问语句,所述数据库访问语句用于对第二数据库进行访问;
第二获取模块,用于根据所述数据库访问语句,从所述第二数据库获取数据库访问结果;
第一确定模块,用于若所述访问结果中包括第一错误码,则确定所述第一错误码在所述第一数据库中对应的第二错误码;
第二确定模块,用于根据所述第二错误码,确定所述应用程序的响应结果。
作为一种可能的实现方式,所述第二确定模块,具体用于:
将所述数据库访问语句发送至错误码映射驱动程序,并经由所述错误码映射驱动程序从所述第二数据库获取数据访问结果。
作为一种可能的实现方式,所述第二确定模块,具体用于:
经由所述错误码映射驱动程序将所述数据库访问语句发送至所述第二数据库的数据库驱动程序,并由所述第二数据库的数据库驱动程序将所述数据库访问语句发送至所述第二数据库的内核中进行处理并返回所述数据访问结果。
作为一种可能的实现方式,所述第一确定模块,具体用于:
根据所述第一数据库与第二数据库的错误码映射信息,确定所述第一错误码在所述第一数据库中对应的第二错误码。
作为一种可能的实现方式,所述第一确定模块,具体用于:
由错误码映射驱动程序捕获所述第二数据库的数据库驱动程序输出的所述第一错误码,并由所述错误码映射驱动程序从预先创建的错误码映射表中查找所述第一错误码对应的所述第二错误码。
作为一种可能的实现方式,所述第一确定模块,具体用于:
由所述错误码映射驱动程序从所述第二数据库的数据库驱动程序对应的多个输出接口捕获所述第一错误码。
作为一种可能的实现方式,还包括:创建模块,所述创建模块用于:
根据所述第二数据库的数据库驱动程序中的接口信息,创建与所述接口信息对应的代理对象;
根据所述代理对象,创建所述错误码映射驱动程序。
第三方面,本申请另一实施例提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如上述第一方面任一所述方法的步骤。
第四方面,本申请另一实施例提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上述第一方面任一所述方法的步骤。
本申请的有益效果是:通过对数据库访问结果进行判断,得到当前数据库对应的第一错误码,并对第一错误码进行映射,能够确定出与第一错误码对应的第二错误码,实现了不同类型的数据库之间的错误码的普适性转换,从而保证无需对应用程序中涉及错误码的程序段进行任何修改,即可使得应用程序能够正常运行,实现了应用程序对所有类型的数据库的正常访问,提高了应用程序的复用率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为现有技术中示例性的一种异常类的分类示意图;
图2为本申请实施例提供的数据访问处理方法的一种示例性的场景示意图;
图3为本申请实施例提供的数据访问处理方法的另一种示例性的场景示意图;
图4为本申请实施例提供的数据访问处理方法的流程示意图;
图5为本申请实施例提供的数据访问处理方法中获取数据库访问结果时的示意图;
图6为本申请实施例提供的数据访问处理方法创建错误码映射驱动程序的流程示意图;
图7为本申请实施例提供的一种数据访问处理装置的模块结构图;
图8为本申请实施例提供的另一种数据访问处理装置的模块结构图;
图9为本申请实施例提供的电子设备结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。 应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
首先对本申请涉及的相关背景进行说明。在使用数据库的过程中,难以避免的会出现数据库抛出异常的情况,业务系统的应用程序会根据实际的业务场景对数据库抛出的异常进行捕获和处理,通常会使用错误码作为分类和判断的依据。如果业务系统的应用程序需要更换或者适配另一种数据库但其抛出的错误码和原始数据库不同,那么,现有技术中的一种错误码转换方法,通过修改应用程序中判断错误码逻辑的程序段,使得抛出的错误码和原始数据库保持一致。但是,这种错误码转换方法,需要开发人员对应用程序进行大量的程序代码改动,可维护性差。
作为另一种可能的实现方式,现有技术中还可以对另一种数据库进行处理,使得另一种数据库抛出与原始数据库相同的错误码,但是,这种错误码转换方法对数据库的供应商要求比较高,数据库的厂商不一定能够支持这种改动,因此,不具备普适性。
作为另一种可能的实现方式,现有技术中提出了基于Spring框架的错误码转换方法,参照图1所示,为现有技术中示例性的一种异常类的分类示意图,使用异常转换器来捕获底层数据库操作抛出的异常,并将其转换为统一的数据访问异常(DataAccessException),从而根据统一的异常类进行异常处理,而不需要关心具体的数据库错误码,以实现不同数据库之间的错误码映射。示例性的,继续参照图1所示,现有技术中可以将数据访问异常按照异常时长划分为短暂数据访问异常和非短暂数据访问异常,其中,短暂数据访问异常通常是由于数据访问时产生了死锁而造成的异常,非短暂数据访问异常中分为无效数据访问资源使用异常、完整性约束异常以及未分类数据库异常等。但是,现有的基于Spring框架的错误码转换方法需要通过调用JAVA.sql.DatabaseMetaData接口的getDatabaseProductName方法获取到当前JDBC Connection连接的数据库产品名称,再通过产品名称调用指定的异常转换器方法才可以进行异常转换。如果业务系统的应用程序要更换或适配的目标数据库的产品名称不在Spring的维护清单内,则无法进行错误码转换,同时,如果业务系统的应用程序要更换的目标数据库是基于开源数据库二次开发的,虽然该开源数据库的产品名称在Spring的维护清单内,但是该二次开发的数据库内部定义的错误码有可能和开源数据库不是一一对应的,那么也会导致该错误码转换方法失效,因此,这种错误码转化方法无法适用于所有的数据库,在应用时具有一定的局限性。
本申请实施例基于上述问题,提出一种数据访问处理方法,通过在应用程序执行过程中,对数据库访问结果进行判断,得到当前数据库的错误码,并将当前数据库的错误码进行映射,从而在无需对应用程序中涉及错误码的程序段进行任何修改的情况下,保证应用程序正常执行,具有一定的普适性,能够适用于所有数据库。
图2为本申请实施例提供的数据访问处理方法的一种示例性的场景示意图,参照图2所示,该场景中可以涉及供应商以及多个用户。其中,供应商为多个用户提供应用程序,以使得每个用户都可以将供应商提供的应用程序部署到自己的业务系统上,从而实现应用程序对每个用户的数据库进行访问,使得应用程序能够对相关业务流程进行处理,并得到应用程序的响应结果。
应当理解,应用程序中可以包括业务逻辑、配置文件、日志系统、部署脚本、测试用例、用户界面以及版本控制工具等。其中,业务逻辑作为应用程序的核心部分,用于处理和执行各种业务规则和逻辑,配置文件用于配置应用程序的各种参数,例如数据库的连接参数以及日志配置等,日志系统用于记录应用程序的运行日志,以便进行故障排查和性能优化,部署脚本用于自动化部署应用程序到目标的环境或者服务器中,测试用例用于测试应用程序的功能和性能,确保应用程序的正常运行以及对应用程序进行性能的预判,用户界面用于与用户进行交互,版本控制工具用于管理应用程序的版本和代码库,实现应用程序的维护。作为一种示例,用户可以通过对配置文件进行修改、运行部署脚本、运行测试用例以及运行日志系统等步骤实现对应用程序的部署。
其中,应用程序中的业务逻辑可以使用任一的开发语言来实现,例如:JAVA、Python、C/C++、JavaScript等。
示例性的,本申请以两个用户组A和B为例进行说明,参照图3所示,图3为本申请实施例提供的数据访问处理方法的另一种示例性的场景示意图。用户A向供应商提出针对特定业务流程的采购需求,并且,用户A所使用的数据库为数据库A。供应商基于用户A的采购需求,研发出初始的应用程序,该初始的应用程序中与错误码相关的程序段均是基于该数据库A的错误码规则编写的。因此,当供应商将该初始的应用程序提供给用户A之后,仅需要修改配置文件以及运行部署脚本,就可以将初始的应用程序部署到业务系统A中,从而能够实现应用程序对数据库A的访问,使得应用程序能够对特定业务流程进行处理,得到应用程序的响应结果。此后,用户B向供应商提出针对同一业务流程的采购需求,并且,用户B所使用的数据库为数据库B,其中,数据库A与数据库B属于不同类型的数据库。在未使用本申请实施例提供的技术方案的情况下,由于数据库A和数据库B属于不同类型的数据库,供应商需要根据数据库B的错误码规则,对初始的应用程序中所有涉及错误码的程序段进行修改,这就需要开发人员对所有涉及错误码的程序段逐一进行修改,不但会产生大量的研发成本,还会影响初始的应用程序的可维护性。而通过在初始的应用程序中部署本申请实施例提供的技术方案,可以将数据库B的错误码映射至数据库A的错误码,使得无需对初始的应用程序中涉及错误码的程序段做任何的修改,即可实现正确的数据访问处理,保证应用程序的正常运行,同时,保证应用程序的可维护性。因此,供应商可以直接将部署了本申请实施例提供的技术方案的应用程序提供给用户B,以使得用户B能够通过修改配置文件以及运行部署脚本的方式将应用程序部署到业务系统B中,从而能够实现应用程序对数据库B的访问,使得应用程序能够对同一业务流程进行处理。作为一种示例,在具体实施过程中,本申请实施例提供的技术方案可以以插件的形式部署至应用程序中,并随着应用程序的执行一同执行,从而保证应用程序的原有程序代码不被修改,进一步保证应用程序的业务逻辑的正常运行。
因此,当应用程序对数据库B进行访问时,应用程序在执行原本的业务逻辑的同时,执行本申请实施例提供的数据访问处理方法的步骤,使得数据B的错误码能够与数据库A的错误码保持一致,从而保证应用程序能够对数据库B进行正常访问,保证应用程序的正常运行,得到当前业务流程的执行结果。
以下结合多个实施例对本申请实施例的数据访问处理方法进行详细说明。
图4为本申请实施例提供的数据访问处理方法的流程示意图,该方法的执行主体可以为前述的应用程序,错误码相关的程序段参照图4所示,该方法包括:
S401、获取数据库访问语句,数据库访问语句用于对第二数据库进行访问。
其中,应用程序中与错误码相关的程序段基于第一数据库的错误码规则编写。
应当理解,应用程序中的业务逻辑作为应用程序的核心部分,包含有执行当前业务流程的所有业务规则和逻辑所对应的程序代码,而在所有业务规则和逻辑所对应的程序代码中,包含有若干个与错误码相关的程序段,由于初始的应用程序中与错误码相关的程序段均是基于第一数据库的错误码规则编写的,因此,所有业务规则和逻辑所对应的程序代码中的若干个与错误码相关的程序段,均是基于第一数据库的错误码规则编写的。示例性的,与错误码相关的程序段可以为返回值为错误码的程序段、入参为错误码的程序段以及以错误码作为只读数据段的程序段等。
可选的,应用程序中的业务逻辑在执行过程中会对当前业务流程的所有业务规则和逻辑所对应的程序代码进行执行,当执行到数据库访问语句时,应用程序对第二数据库进行访问,具体的,应用程序可以通过数据库提供的接口或者驱动程序来执行数据库访问语句,以对第二数据库进行访问。其中,数据库访问语句可以用于对数据库进行查询、插入、更新、删除、创建、修改以及索引等操作。
示例性的,继续参照图3所示,第一数据库可以为数据库A,第二数据库可以为数据库B。当业务系统B中的应用程序执行业务逻辑中的数据库访问语句时,应用程序对数据库B进行访问。
S402、根据数据库访问语句,从第二数据库获取数据库访问结果。
可选的,应用程序对第二数据库执行数据库访问语句,并从第二数据库获取到数据库的访问结果。其中,数据库的访问结果包括:查询结果、受影响的行数、错误码、以及返回值等。
示例性的,应用程序对数据库B执行数据库访问语句,并获取数据库B的访问结果。其中,数据库B的访问结果可以包括对数据库B的查询结果、数据库B在数据库访问语句执行后的受影响的行数、错误码以及返回值等。
S403、若访问结果中包括第一错误码,则确定第一错误码在第一数据库中对应的第二错误码。
可选的,应用程序对访问结果进行判断,当数据库访问结果中包括第一错误码时,这就意味着应用程序在对第二数据库的访问过程中,第一数据库与第二数据库的错误码不一致,使得应用程序无法按照原有的业务逻辑进行执行。由于数据库访问语句中与错误码相关的程序段是基于第一数据库的错误码规则编写,因此,应用程序需要对访问结果中的第一错误码进行映射,确定出在第一数据库中对应的第二错误码,从而使得应用程序能够继续执行原有的业务逻辑。
示例性的,应用程序对数据库B的访问结果进行判断,当数据库B的访问结果中包括了数据库B的错误码时,应用程序需要对数据库B的错误码进行映射,确定出与数据库B的错误码相对应的数据库A的错误码,从而使得应用程序能够继续执行当前的业务逻辑。
S404、根据第二错误码,确定应用程序的响应结果。
可选的,应用程序映射出在第一数据库中对应的第二错误码后,意味着第一数据库与第二数据库的错误码不一致的问题已经被解决,应用程序能够使用第二错误码继续执行原有的业务逻辑,从而能够确定出应用程序的响应结果,同时,对于应用程序原有的业务逻辑来说,其响应结果并不会受到不同类型数据库的影响,仍然可以按照原有的业务逻辑得到响应结果。其中,应用程序的响应结果可以与特定的业务流程相关,具体可以包括应用程序的文本响应结果、图片响应结果、数据交换(JAVAScript Object Notation,简称JSON)响应结果、标记语言(eXtensible Markup Language,简称XML)响应结果、网页(HyperTextMarkup Language,简称HTML)响应结果、文件响应结果、状态码响应结果以及其他自定义响应结果。
示例性的,应用程序映射出与数据库B的错误码相对应的数据库A的错误码后,应用程序能够使用数据库A的错误码继续执行原有的业务逻辑,从而按照原有的业务逻辑得到应用程序的响应结果,并且,在这个过程中,不同类型的数据库的错误码的转换对应用程序原有的业务逻辑来说是无感知的,使得应用程序能够稳定执行。
可选的,上述步骤S402-S403可以由独立部署的插件来完成,其中,上述步骤S402-S403可以分别通过插件中的功能函数或者事件处理函数来实现。应用程序可以预先对用以执行步骤S402-S403的插件进行加载,并分配必要的资源,然后对插件中的功能函数或者事件处理函数进行调用,从而接收到插件返回的结果,并对插件返回的结果进行判断,以执行进一步的处理。
在本实施例中,通过对数据库访问结果进行判断,得到当前数据库对应的第一错误码,并对第一错误码进行映射,能够确定出与第一错误码对应的第二错误码,实现了不同类型的数据库之间的错误码的普适性转换从而保证无需对应用程序中涉及错误码的程序段进行任何修改,即可使得应用程序能够正常运行,实现了应用程序对不同类型的数据库的正常访问,提高了应用程序的复用率。
作为一种可能的实现方式,上述步骤S402中,获取数据库访问结果时可以按照以下步骤执行,具体可以为:
将数据库访问语句发送至错误码映射驱动程序,并经由错误码映射驱动程序从第二数据库获取数据访问结果。
可选的,应用程序通过错误码映射驱动程序来执行数据库访问语句时,应用程序将数据库访问语句发送至错误码映射驱动程序,以使得错误码映射驱动程序能够执行数据库访问语句对第二数据库进行访问,同时,第二数据库能够通过错误码映射程序将数据访问结果发送至应用程序。其中,错误码映射驱动程序可以通过对第二数据库的驱动程序进行扩展得到。
示例性的,图5为本申请实施例提供的数据访问处理方法中获取数据库访问结果时的示意图,参照图5所示,错误码映射驱动程序可以基于第二数据库的驱动程序静态代理得到,应用程序将数据库访问语句发送至错误码映射驱动程序,以通过错误码映射驱动程序从第二数据库获取数据访问结果。
通过错误码映射驱动程序对第二数据库进行访问,并获取数据访问结果,能够通过错误码映射驱动程序对第二数据库的访问内容与数据进行保护和隐藏,提高代码的复用率,同时,能够使得程序代码结构更清晰,易于理解和维护,从而实现更为灵活的业务处理。
作为一种可能的实现方式,上述经由错误码映射驱动程序从第二数据库获取数据访问结果时,可以按照以下步骤执行,具体可以为:
经由错误码映射驱动程序将数据库访问语句发送至第二数据库的数据库驱动程序,并由第二数据库的数据库驱动程序将数据库访问语句发送至第二数据库的内核中进行处理并返回数据访问结果。
可选的,由于错误码映射驱动程序是通过对第二数据库的驱动程序进行静态代理得到,应用程序经由错误码映射驱动程序从第二数据库获取数据访问结果时,可以经由错误码映射驱动程序将数据库访问语句发送至第二数据库的数据库驱动程序,并由第二数据库的数据库驱动程序将数据库访问语句发送至第二数据库的内核中进行处理并返回数据访问结果。
其中,错误码映射驱动程序对数据库驱动程序的静态代理可以通过定义接口、创建与数据库驱动程序中的被代理类对应的错误码映射驱动程序代理类以及构造错误码映射驱动程序代理类等步骤来实现,本申请对此不做赘述。
经由错误码映射驱动程序将数据库访问语句发送至第二数据库的数据库驱动程序,能够通过错误码映射驱动程序对第二数据库的访问内容与数据进行保护和隐藏,提高代码的复用率,由第二数据库的数据库驱动程序将数据库访问语句发送至第二数据库的内核中进行处理并返回数据访问结果,使得应用程序可以与多种类型的数据库进行交互,而不需要了解每一种数据库的细节和差异,使得应用程序的开发过程更加的方便与高效。
作为一种可能的实现方式,上述步骤S403中,确定第一错误码在第一数据库中对应的第二错误码时,可以按照以下步骤执行,具体可以为:
根据第一数据库与第二数据库的错误码映射信息,确定第一错误码在第一数据库中对应的第二错误码。
可选的,供应商可以对第一数据库与第二数据库的错误码进行映射,从而得到第一数据库与第二数据库的错误码映射信息,并将第一数据与第二数据库的错误码映射信息提供给第二数据库的用户,即上述用户B,以使得用户B将应用程序部署到业务系统B后,应用程序能够根据错误码映射信息,确定第一错误码在第一数据库中对应的第二错误码。
示例性的,以JAVA语言实现为例,第一数据库与第二数据库的错误码映射信息可以使用Map接口的类来实现,从而对错误码映射信息进行定义以及存储,例如:HashMap、TreeMap、LinkedHashMap等。例如,创建一个新的HashMap实例,名为errorMapping,并将Map的键和值设置为Integer类型,并将第一数据库的错误码与第二数据库的错误码作为一个键值对添加到errorMapping这个HashMap实例中,进行存储。
通过第一数据库与第二数据库的错误码映射信息,能够准确的确定出第一错误码在第一数据库中对应的第二错误码,同时,避免由于错误码不一致导致的应用程序的业务逻辑更改,减小对代码的改动量,保证应用程序的正常执行。
作为一种可能的实现方式,上述根据第一数据库与第二数据库的错误码映射信息,确定第一错误码在第一数据库中对应的第二错误码时,具体可以按照以下步骤执行,包括:
由错误码映射驱动程序捕获第二数据库的数据库驱动程序输出的第一错误码,并由错误码映射驱动程序从预先创建的错误码映射表中查找第一错误码对应的第二错误码。
可选的,错误码映射驱动程序可以通过捕获的方式得到第二数据库的数据库驱动程序输出的第一错误码,并对第一数据库与第二数据库的错误码映射信息进行查询,得到第一错误码对应的第二错误码。其中,错误码映射信息可以为预先创建的错误码映射表。
示例性的,以JAVA语言实现为例,错误码映射驱动程序中可以捕获接口方法中抛出的JAVA.sql.SQLException异常,以得到第二数据库的数据库驱动程序输出的第一错误码,并对第一数据库与第二数据库的错误码映射信息进行查询,得到第一错误码对应的第二错误码。
作为一种可能的实现方式,由错误码映射驱动程序捕获第二数据库的数据库驱动程序输出的第一错误码,包括:
由错误码映射驱动程序从第二数据库的数据库驱动程序对应的多个输出接口捕获第一错误码。
可选的,错误码映射驱动程序可以通过内核模式驱动框架(Kernel Mode DriverFramework,简称KMDF)来从数据库驱动程序对应的多个输出接口中捕获数据库驱动程序输出的第一错误码。具体的,可以通过使用内核模式驱动框架(Kernel Mode DriverFramework,简称KMDF)提供的函数和结构来注册回调函数,以实现对第一错误码的捕获。
图6为本申请实施例提供的数据访问处理方法创建错误码映射驱动程序的流程示意图。
作为一种可能的实现方式,上述步骤S401中获取数据库访问语句之前,还可以对错误码映射驱动程序进行创建,参照图6所示,可以按照以下步骤执行,包括:
S601、根据第二数据库的数据库驱动程序中的接口信息,创建与接口信息对应的代理对象。
可选的,在创建错误码映射驱动程序前,可以先创建与第二数据库的数据库驱动程序的接口信息所对应的代理对象,创建与第二数据库的数据库驱动程序所对应的代理对象可以通过引入必要的头文件和库、创建数据库连接、实现代理对象的方法、绑定代理对象到应用程序等操作来实现,本申请对此不做赘述。
示例性的,以JAVA语言实现为例,可以使用JDBC API来建立到第二数据库驱动程序的连接,具体的可以使用JAVA.net.Socket类中connect()方法来建立到第二数据库驱动程序的连接,从而实现第二数据库的代理对象。
S602、根据代理对象,创建错误码映射驱动程序。
可选的,代理对象创建完成后,代理对象可以充当数据库连接和应用程序之间的中间层,同时,代理对象还提供了用于执行数据库操作的方法和属性。因此,基于代理对象,结合业务逻辑,能够创建出错误码映射驱动程序,以经由错误码映射驱动程序对数据库进行访问,从而执行本申请实施例提供的数据访问处理方法的步骤。
图7为本申请实施例提供的一种数据访问处理装置的模块结构图,参照图7所示,该装置应用于应用程序,应用程序中与错误码相关的程序段基于第一数据库的错误码规则编写,该装置包括:
第一获取模块701,用于获取数据库访问语句,数据库访问语句用于对第二数据库进行访问;
第二获取模块702,用于根据数据库访问语句,从第二数据库获取数据库访问结果;
第一确定模块703,用于若访问结果中包括第一错误码,则确定第一错误码在第一数据库中对应的第二错误码;
第二确定模块704,用于根据第二错误码,确定应用程序的响应结果。
作为一种可能的实现方式,第二确定模块702,具体用于:
将数据库访问语句发送至错误码映射驱动程序,并经由错误码映射驱动程序从第二数据库获取数据访问结果。
作为一种可能的实现方式,第二确定模块702,具体用于:
经由错误码映射驱动程序将数据库访问语句发送至第二数据库的数据库驱动程序,并由第二数据库的数据库驱动程序将数据库访问语句发送至第二数据库的内核中进行处理并返回数据访问结果。
作为一种可能的实现方式,第一确定模块703,具体用于:
根据第一数据库与第二数据库的错误码映射信息,确定第一错误码在第一数据库中对应的第二错误码。
作为一种可能的实现方式,第一确定模块703,具体用于:
由错误码映射驱动程序捕获第二数据库的数据库驱动程序输出的第一错误码,并由错误码映射驱动程序从预先创建的错误码映射表中查找第一错误码对应的第二错误码。
作为一种可能的实现方式,第一确定模块703,具体用于:
由错误码映射驱动程序从第二数据库的数据库驱动程序对应的多个输出接口捕获第一错误码。
图8为本申请实施例提供的另一种数据访问处理装置的模块结构图。
作为一种可能的实现方式,参照图8所示,该装置还包括:创建模块705,创建模块705用于:
根据第二数据库的数据库驱动程序中的接口信息,创建与接口信息对应的代理对象;
根据代理对象,创建错误码映射驱动程序。
本申请实施例还提供了一种电子设备900,如图9所示,图9为本申请实施例提供的电子设备结构示意图,包括:处理器901、存储器902,可选的,还可以包括总线903。所述存储器902存储有所述处理器901可执行的机器可读指令(比如,图8中的装置中第一获取模块701、第二获取模块702、第一确定模块703、第二确定模块704以及创建模块704对应的执行指令等),当电子设备900运行时,所述处理器901与所述存储器902之间通过总线903通信,所述机器可读指令被所述处理器901执行时执行上述数据访问处理方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述数据访问处理方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种数据访问处理方法,其特征在于,包括:应用于应用程序,所述应用程序中与错误码相关的程序段基于第一数据库的错误码规则编写,所述方法包括:
获取数据库访问语句,所述数据库访问语句用于对第二数据库进行访问;
根据所述数据库访问语句,从所述第二数据库获取数据库访问结果;
若所述访问结果中包括第一错误码,则确定所述第一错误码在所述第一数据库中对应的第二错误码;
根据所述第二错误码,确定所述应用程序的响应结果。
2.根据权利要求1所述的数据访问处理方法,其特征在于,所述根据所述数据库访问语句,从所述第二数据库获取数据库访问结果,包括:
将所述数据库访问语句发送至错误码映射驱动程序,并经由所述错误码映射驱动程序从所述第二数据库获取数据访问结果。
3.根据权利要求2所述的数据访问处理方法,其特征在于,所述经由所述错误码映射驱动程序从所述第二数据库获取数据访问结果,包括:
经由所述错误码映射驱动程序将所述数据库访问语句发送至所述第二数据库的数据库驱动程序,并由所述第二数据库的数据库驱动程序将所述数据库访问语句发送至所述第二数据库的内核中进行处理并返回所述数据访问结果。
4.根据权利要求1所述的数据访问处理方法,其特征在于,所述确定所述第一错误码在所述第一数据库中对应的第二错误码,包括:
根据所述第一数据库与第二数据库的错误码映射信息,确定所述第一错误码在所述第一数据库中对应的第二错误码。
5.根据权利要求4所述的数据访问处理方法,其特征在于,所述根据所述第一数据库与第二数据库的错误码映射信息,确定所述第一错误码在所述第一数据库中对应的第二错误码,包括:
由错误码映射驱动程序捕获所述第二数据库的数据库驱动程序输出的所述第一错误码,并由所述错误码映射驱动程序从预先创建的错误码映射表中查找所述第一错误码对应的所述第二错误码。
6.根据权利要求5所述的数据访问处理方法,其特征在于,所述由错误码映射驱动程序捕获所述第二数据库的数据库驱动程序输出的所述第一错误码,包括:
由所述错误码映射驱动程序从所述第二数据库的数据库驱动程序对应的多个输出接口捕获所述第一错误码。
7.根据权利要求3或5所述的数据访问处理方法,其特征在于,所述获取数据库访问语句之前,还包括:
根据所述第二数据库的数据库驱动程序中的接口信息,创建与所述接口信息对应的代理对象;
根据所述代理对象,创建所述错误码映射驱动程序。
8.一种数据访问处理装置,其特征在于,包括:应用于应用程序,所述应用程序中与错误码相关的程序段基于第一数据库的错误码规则编写,所述装置包括:
第一获取模块,用于获取数据库访问语句,所述数据库访问语句用于对第二数据库进行访问;
第二获取模块,用于根据所述数据库访问语句,从所述第二数据库获取数据库访问结果;
第一确定模块,用于若所述访问结果中包括第一错误码,则确定所述第一错误码在所述第一数据库中对应的第二错误码;
第二确定模块,用于根据所述第二错误码,确定所述应用程序的响应结果。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器执行所述机器可读指令,以执行如权利要求1至7任一所述的数据访问处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的数据访问处理方法的步骤。
CN202311490491.8A 2023-11-10 2023-11-10 数据访问处理方法、装置、电子设备及存储介质 Active CN117235107B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311490491.8A CN117235107B (zh) 2023-11-10 2023-11-10 数据访问处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311490491.8A CN117235107B (zh) 2023-11-10 2023-11-10 数据访问处理方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117235107A true CN117235107A (zh) 2023-12-15
CN117235107B CN117235107B (zh) 2024-01-26

Family

ID=89098472

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311490491.8A Active CN117235107B (zh) 2023-11-10 2023-11-10 数据访问处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117235107B (zh)

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040249792A1 (en) * 2003-06-04 2004-12-09 Salman Halim Automated query file conversions upon switching database-access applications
US20050234842A1 (en) * 2004-03-31 2005-10-20 International Business Machines Corporation System and method for increasing system resource availability in database management systems
CN101453359A (zh) * 2007-12-06 2009-06-10 北京启明星辰信息技术股份有限公司 一种数据库错误信息提取方法及系统
CN102902798A (zh) * 2012-10-11 2013-01-30 德讯科技股份有限公司 一种针对Informix数据库的SQL信息采集和审计方法及其系统
CN107145481A (zh) * 2017-05-05 2017-09-08 恒生电子股份有限公司 电子设备、存储介质、网页表单填充方法及装置
CN107463842A (zh) * 2017-08-23 2017-12-12 杭州安恒信息技术有限公司 基于数据库协议的sql注入审计或防护方法及装置
CN109445770A (zh) * 2018-10-16 2019-03-08 武汉斗鱼网络科技有限公司 一种错误码的处理方法、装置、介质及设备
CN110968601A (zh) * 2019-11-28 2020-04-07 中国银行股份有限公司 一种数据查询处理方法及装置
WO2021013058A1 (zh) * 2019-07-19 2021-01-28 深圳前海微众银行股份有限公司 大数据产品的异常提示方法、装置、系统、设备及介质
CN112559233A (zh) * 2020-12-14 2021-03-26 建信金融科技有限责任公司 识别故障类型的方法、装置、设备和计算机可读介质
CN112698868A (zh) * 2021-01-08 2021-04-23 瑞芯微电子股份有限公司 一种应用于多系统的统一错误码方法和存储设备
CN112861529A (zh) * 2019-11-27 2021-05-28 北京沃东天骏信息技术有限公司 错误码管理的方法和装置
CN112866348A (zh) * 2020-12-31 2021-05-28 金蝶软件(中国)有限公司 数据库访问方法、装置、计算机设备和存储介质
CN114090613A (zh) * 2021-11-19 2022-02-25 恒生电子股份有限公司 程序语句转换方法、装置、设备及存储介质
CN114780615A (zh) * 2022-04-29 2022-07-22 维沃移动通信有限公司 错误码管理方法及其装置
CN115408193A (zh) * 2022-09-05 2022-11-29 中国银行股份有限公司 多模块间错误码处理方法及装置
CN115955384A (zh) * 2022-12-16 2023-04-11 成都赛力斯科技有限公司 错误码返回方法、装置和系统
CN116414898A (zh) * 2023-03-15 2023-07-11 连连(杭州)信息技术有限公司 一种数据库访问方法、装置、电子设备及存储介质

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040249792A1 (en) * 2003-06-04 2004-12-09 Salman Halim Automated query file conversions upon switching database-access applications
US20050234842A1 (en) * 2004-03-31 2005-10-20 International Business Machines Corporation System and method for increasing system resource availability in database management systems
CN101453359A (zh) * 2007-12-06 2009-06-10 北京启明星辰信息技术股份有限公司 一种数据库错误信息提取方法及系统
CN102902798A (zh) * 2012-10-11 2013-01-30 德讯科技股份有限公司 一种针对Informix数据库的SQL信息采集和审计方法及其系统
CN107145481A (zh) * 2017-05-05 2017-09-08 恒生电子股份有限公司 电子设备、存储介质、网页表单填充方法及装置
CN107463842A (zh) * 2017-08-23 2017-12-12 杭州安恒信息技术有限公司 基于数据库协议的sql注入审计或防护方法及装置
CN109445770A (zh) * 2018-10-16 2019-03-08 武汉斗鱼网络科技有限公司 一种错误码的处理方法、装置、介质及设备
WO2021013058A1 (zh) * 2019-07-19 2021-01-28 深圳前海微众银行股份有限公司 大数据产品的异常提示方法、装置、系统、设备及介质
CN112861529A (zh) * 2019-11-27 2021-05-28 北京沃东天骏信息技术有限公司 错误码管理的方法和装置
CN110968601A (zh) * 2019-11-28 2020-04-07 中国银行股份有限公司 一种数据查询处理方法及装置
CN112559233A (zh) * 2020-12-14 2021-03-26 建信金融科技有限责任公司 识别故障类型的方法、装置、设备和计算机可读介质
CN112866348A (zh) * 2020-12-31 2021-05-28 金蝶软件(中国)有限公司 数据库访问方法、装置、计算机设备和存储介质
CN112698868A (zh) * 2021-01-08 2021-04-23 瑞芯微电子股份有限公司 一种应用于多系统的统一错误码方法和存储设备
CN114090613A (zh) * 2021-11-19 2022-02-25 恒生电子股份有限公司 程序语句转换方法、装置、设备及存储介质
CN114780615A (zh) * 2022-04-29 2022-07-22 维沃移动通信有限公司 错误码管理方法及其装置
CN115408193A (zh) * 2022-09-05 2022-11-29 中国银行股份有限公司 多模块间错误码处理方法及装置
CN115955384A (zh) * 2022-12-16 2023-04-11 成都赛力斯科技有限公司 错误码返回方法、装置和系统
CN116414898A (zh) * 2023-03-15 2023-07-11 连连(杭州)信息技术有限公司 一种数据库访问方法、装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
谷庆华;李成贵;: "基于Java语言实现数据库的访问", 计算机技术与发展, no. 02, pages 13 - 16 *

Also Published As

Publication number Publication date
CN117235107B (zh) 2024-01-26

Similar Documents

Publication Publication Date Title
US8438418B2 (en) Simplifying automated software maintenance of data centers
US20100017427A1 (en) Multilevel Hierarchical Associations Between Entities in a Knowledge System
CN112241360B (zh) 一种测试用例生成方法、装置、设备及存储介质
CN106294113B (zh) 一种基于可编程式测试服务的创建方法及装置
JP4023803B2 (ja) ウェブアプリケーション開発支援装置、データ処理方法及びプログラム
CN110750458A (zh) 大数据平台测试方法、装置、可读存储介质及电子设备
CN110784374A (zh) 业务系统运行状态的监控方法、装置、设备和系统
CN115080398A (zh) 一种接口自动化测试系统及方法
US20090063395A1 (en) Mapping log sets between different log analysis tools in a problem determination environment
US7617462B2 (en) Graphical user interface (GUI) for displaying software component availability as determined by a messaging infrastructure
CN112187933A (zh) 一种多架构云平台中服务的监控方法和系统
CN117112060A (zh) 组件库构建方法、装置、电子设备及存储介质
US7496551B1 (en) Methods and apparatus associated with advisory generation
CN115525534A (zh) 基于swagger的接口测试的测试用例生成方法、生成平台
US7734763B2 (en) Application for testing the availability of software components
CN117235107B (zh) 数据访问处理方法、装置、电子设备及存储介质
US7739420B2 (en) Communication error information output method, communication error information output device and recording medium therefor
CN105260193A (zh) 一种大型软件自愈合框架及愈合方法
US20220182290A1 (en) Status sharing in a resilience framework
CN114328180A (zh) 接口自动化测试方法、系统、电子设备及存储介质
CN116132250A (zh) 运维系统、方法、存储介质、电子设备
CN113434382A (zh) 数据库性能监控方法、装置、电子设备及计算机可读介质
CN112860398A (zh) 基于规则引擎的数据处理方法、装置、设备及介质
CN111694752A (zh) 应用测试方法、电子设备及存储介质
US8949403B1 (en) Infrastructure for maintaining cognizance of available and unavailable software components

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