CN112364087A - Arm平台的c/c++应用程序访问数据库的方法及*** - Google Patents
Arm平台的c/c++应用程序访问数据库的方法及*** Download PDFInfo
- Publication number
- CN112364087A CN112364087A CN202011347050.9A CN202011347050A CN112364087A CN 112364087 A CN112364087 A CN 112364087A CN 202011347050 A CN202011347050 A CN 202011347050A CN 112364087 A CN112364087 A CN 112364087A
- Authority
- CN
- China
- Prior art keywords
- database
- proxy
- jdbc
- client
- access request
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000007781 pre-processing Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 13
- 238000011161 development Methods 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 42
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了ARM平台的C/C++应用程序访问数据库的方法及***,在C/C++应用程序中部署代理客户端,该代理客户端将C/C++应用程序产生的数据库访问请求发送至代理服务端,该代理服务端部署在基于ARM平台的服务器上。C/C++应用程序使用ODBC接口,而C/C++应用程序访问数据库需要使用与平台无关的相应数据库对应的JDBC客户端实现,代理服务端完成ODBC接口转换为JDBC接口的过程。利用该方案不需要针对每一个C/C++应用程序开发相应的ODBC接口转为JDBC接口的程序,因此,降低了开发难度,而且,可以在代理服务端部署多种不同数据库类型对应的JDBC客户端,实现与不同类型的数据库连接,提高了灵活性。
Description
技术领域
本发明属于软件开发技术领域,尤其涉及一种ARM平台的C/C++应用程序访问数据库的方法及***。
背景技术
随着基于ARM架构的服务器的开发与应用,基于ARM架构的服务器开始逐渐替代基于X86架构的服务器。
在ARM构架提供的基础软件开发环境中,拥有源代码的应用***和主要的开源***组件都能通过重新编译移植到ARM架构下。在大型企业IT应用环境下,将应用程序从X86架构移植到ARM架构,而由于应用程序移植前所连接的数据库迁移到其他数据库需要较长的过程,在此过程中如果先将C/C++应用程序从X86平台移植到ARM平台,必须解决ARM平台的C/C++应用程序访问非ARM平台数据库的问题,
目前的解决方案是,在C/C++应用程序内使用开放数据库连接(Open DatabaseConnectivity,ODBC)接口,利用Java本地接口(Java Database Connectivity,JNI)将ODBC桥接至Java数据库连接(Java Database Connectivity,JDBC),实现数据库直连。ODBC的接口定义与JDBC相比细粒度程度高,接口映射和实现困难;而且,对于原有C/C++应用程序的稳定性有影响,程序调试较复杂,对调试人员的调试技能要求很高。
发明内容
有鉴于此,本发明的目的在于提供一种ARM平台的C/C++应用程序访问数据库的方法及***,以解决传统的解决方案通过JNI将ODBC连接至JDBC实现困难且对会C/C++应用程序产生影响的技术问题,具体的技术方案如下:
一方面,本发明提供了一种ARM平台的C/C++应用程序访问数据库的方法,ARM平台的C/C++应用程序中部署有代理客户端,且在基于ARM平台的服务器上部署有代理服务端,所述方法包括:
所述C/C++应用程序生成数据库访问请求,并调用部署在所述C/C++应用程序中的代理客户端发送所述数据库访问请求;
所述代理客户端将所述数据库访问请求发送至所述代理服务器;
所述代理服务器解析所述数据库访问请求,并调用目标JDBC客户端访问目标类型数据库,得到相应的数据库执行结果,所述目标类型数据库为所述C/C++应用程序请求访问的数据库,所述目标JDBC客户端是与所述目标类型数据库相对应的JDBC客户端;
所述代理服务器将得到的数据库执行结果返回至所述代理客户端,并由所述代理客户端将所述数据库执行结果返回至所述C/C++应用程序。
可选地,调用部署在C/C++应用程序中的代理客户端发送所述数据库访问请求,包括:
所述C/C++应用程序调用部署在该C/C++应用程序中的代理ODBC驱动模块将产生的数据库访问请求中的数据库数据类型转换为对应的ODBC数据类型;
所述代理ODBC驱动模块通过库连接调用所述代理客户端,将转换为ODBC数据类型的数据库访问请求转发至所述代理客户端。
可选地,代理服务器中部署有代理服务端、JDBC后端功能代理模块和JDBC客户端;
所述代理服务器解析所述数据库访问请求,并调用目标JDBC客户端访问目标类型数据库,得到相应的数据库执行结果,包括:
所述代理服务端解析所述数据库访问请求,获得所述C/C++应用程序要求访问的目标类型数据库;
所述代理服务端调用部署在该代理服务器中且与所述目标类型数据库相对应的JDBC后端功能代理模块,对所述数据库访问请求进行预处理;
所述JDBC后端功能代理模块调用与所述目标类型数据库对应的JDBC客户端对预处理后的数据库访问请求进行解析;
所述JDBC客户端根据解析结果访问目标类型数据库,得到相应的数据库执行结果。
可选地,所述代理服务端调用部署在该代理服务器中且与所述目标类型数据库相对应的JDBC后端功能代理模块,对所述数据库访问请求进行预处理,包括:
所述JDBC后端功能代理模块解析所述数据库访问请求中的接口操作和请求参数;
所述JDBC后端功能代理模块根据所述接口操作和所述请求参数将所述数据库访问请求转换为相应的JDBC操作。
可选地,所述代理服务器将得到的数据库执行结果返回至所述代理客户端,包括:
所述JDBC客户端接收所述目标类型数据库返回的数据库执行结果,病调用所述JDBC后端功能代理模块对所述数据库执行结果进行解;
所述JDBC后端功能代理模块将解析结果返回至所述代理服务端;
所述代理服务端将所述数据库执行结果的解析结果发送至所述代理客户端。
另一方面,本发明还提供了一种ARM平台的C/C++应用程序访问数据库的***,包括:部署在ARM平台的C/C++应用程序,以及,部署在基于ARM平台的代理服务器,其中,所述C/C++应用程序中部署有代理客户端;
所述C/C++应用程序,用于生成数据库访问请求,并调用部署在所述C/C++应用程序中的代理客户端发送所述数据库访问请求,并由所述代理客户端将所述数据库访问请求发送至所述代理服务器;
所述代理服务器,用于解析所述数据库访问请求,并调用部署在所述代理服务器中的目标JDBC客户端访问目标类型数据库,得到相应的数据库执行结果,并将所述数据库执行结果返回至所述代理客户端,并由所述代理客户端将所述数据库执行结果返回至所述C/C++应用程序;
其中,所述目标类型数据库为所述C/C++应用程序请求访问的数据库,所述目标JDBC客户端是与所述目标类型数据库相对应的JDBC客户端。
可选地,所述C/C++应用程序调用部署在C/C++应用程序中的代理客户端发送所述数据库访问请求时,具体用于:
所述C/C++应用程序调用部署在该C/C++应用程序中的代理ODBC驱动模块将产生的数据库访问请求中的数据库数据类型转换为对应的ODBC数据类型;
所述代理ODBC驱动模块通过库连接调用所述代理客户端,将转换为ODBC数据类型的数据库访问请求转发至所述代理客户端。
可选地,代理服务器中部署有代理服务端、JDBC后端功能代理模块和JDBC客户端;
所述代理服务器用于解析所述数据库访问请求,并调用目标JDBC客户端访问目标类型数据库,得到相应的数据库执行结果时,具体用于:
所述代理服务端解析所述数据库访问请求,获得所述C/C++应用程序要求访问的目标类型数据库;
所述代理服务端调用部署在该代理服务器中且与所述目标类型数据库相对应的JDBC后端功能代理模块,对所述数据库访问请求进行预处理;
所述JDBC后端功能代理模块调用与所述目标类型数据库对应的JDBC客户端对预处理后的数据库访问请求进行解析;
所述JDBC客户端根据解析结果访问目标类型数据库,得到相应的数据库执行结果。
可选地,所述代理服务端调用部署在该代理服务器中且与所述目标类型数据库相对应的JDBC后端功能代理模块,对所述数据库访问请求进行预处理时,具体用于:
所述JDBC后端功能代理模块解析所述数据库访问请求中的接口操作和请求参数;
所述JDBC后端功能代理模块根据所述接口操作和所述请求参数将所述数据库访问请求转换为相应的JDBC操作。
可选地,所述代理服务器将得到的数据库执行结果返回至所述代理客户端时,具体用于:
所述JDBC客户端接收所述目标类型数据库返回的数据库执行结果,病调用所述JDBC后端功能代理模块对所述数据库执行结果进行解;
所述JDBC后端功能代理模块将解析结果返回至所述代理服务端;
所述代理服务端将所述数据库执行结果的解析结果发送至所述代理客户端。
本发明提供的ARM平台的C/C++应用程序访问数据库的方法,在C/C++应用程序中部署代理客户端,该代理客户端将C/C++应用程序产生的数据库访问请求发送至代理服务端,该代理服务端部署在基于ARM平台的服务器上。C/C++应用程序使用ODBC接口,而C/C++应用程序访问数据库需要使用与平台无关的相应数据库对应的JDBC客户端实现,代理服务端完成ODBC接口转换为JDBC接口的过程。利用该方案不需要针对每一个C/C++应用程序开发相应的ODBC接口转为JDBC接口的程序,因此,降低了开发难度,而且,可以在代理服务端部署多种不同数据库类型对应的JDBC客户端,实现与不同类型的数据库连接,提高了灵活性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是示出了本发明实施例提供的一种ARM平台的C/C++应用程序访问数据库的***的结构示意图;
图2是本发明实施例提供的一种ARM平台的C/C++应用程序访问数据库方法的信令图;
图3是本发明实施例提供的一种代理服务端将数据库访问请求转换为基于JDBC接口的操作过程的流程示意图。
具体实施方式
C/C++应用程序访问数据库通常包括以下两种方式:一种是C/C++应用程序直接调用该数据库提供的C/C++客户端接口库访问数据库;另一种是C/C++应用程序通过ODBC接口调用数据库提供的ODBC驱动,该ODBC驱动再调用该数据库提供的C/C++客户端接口库访问数据库。这两种方式都需要数据库提供C/C++客户端接口库,而如果数据库未提供C/C++客户端接口库,则C/C++应用程序无法访问数据库。为了解决该技术问题,本发明提供了C/C++应用程序访问数据库的访问方法及***,将ODBC接口转换为JDBC接口的功能部署在代理服务端。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,示出了本发明实施例提供的一种ARM平台的C/C++应用程序访问数据库的***的结构示意图。
如图1所示,该***包括C/C++应用程序1和代理服务器2。其中,C/C++应用程序1部署在ARM平台上,代理服务器2基于ARM构架构建。
C/C++应用程序1上部署有代理客户端,C/C++应用程序1生成数据库访问请求并调用代理客户端将该数据库访问请求发送至代理服务器。
代理服务器2用于解析数据库访问请求,并调用部署在代理服务器中的目标JDBC客户端访问目标类型数据库,得到相应的数据库执行结果,并将数据库执行结果返回至所述代理客户端,并由代理客户端将数据库执行结果返回至C/C++应用程序。
其中,目标类型数据库为C/C++应用程序请求访问的数据库,目标JDBC客户端是与目标类型数据库相对应的JDBC客户端。
C/C++应用程序中部署代理客户端和代理ODBC模块。
C/C++应用程序产生数据库访问请求后,调用代理ODBC驱动,代理ODBC驱动调用代理客户端将数据库访问请求发送至代理服务端。
此外,C/C++应用程序中还部署有ODBC/OCI模版库(ODBC/OCI Template Library,OTL)、unixODBC接口。
C/C++应用程序通过OTL、unixODBC接口和代理ODBC驱动模块逐层接口调用实现对代理客户端的调用,即实现将C/C++应用程序产生的数据库访问请求转发至代理客户端。
代理服务器2中部署的代理服务端主要用于实现将ODBC接口转换为JDBC接口的功能。代理服务器2中还部署有JDBC后端功能代理模块和JDBC客户端。
代理客户端与代理服务端之间利用TCP/IP网络协议进行通信,代理服务端接收到代理客户端发送的数据库访问请求(基于ODBC接口的请求)后,调用与所要访问的数据库类型相对应的JDBC后端功能代理模块,对数据库访问请求进行预处理;JDBC后端功能代理模块调用与目标类型数据库对应的JDBC客户端对预处理后的数据库访问请求进行解析。JDBC客户端根据解析结果访问目标类型数据库,得到相应的数据库执行结果。
在本申请的一个实施例中,代理服务端调用部署在该代理服务器2中且与目标类型数据库相对应的JDBC后端功能代理模块,对所述数据库访问请求进行预处理时,具体用于:
JDBC后端功能代理模块解析所述数据库访问请求中的接口操作和请求参数;
JDBC后端功能代理模块根据所述接口操作和所述请求参数将所述数据库访问请求转换为相应的JDBC操作。
在本申请的另一个实施例中,代理服务器将得到的数据库执行结果返回至所述代理客户端时,具体用于:
所述JDBC客户端接收所述目标类型数据库返回的数据库执行结果,病调用所述JDBC后端功能代理模块对所述数据库执行结果进行解。
所述JDBC后端功能代理模块将解析结果返回至所述代理服务端。
所述代理服务端将所述数据库执行结果的解析结果发送至所述代理客户端。
本实施例提供的***不需要针对每一个C/C++应用程序开发相应的ODBC接口转为JDBC接口的程序,因此,降低了开发难度,而且,可以在代理服务端部署多种不同数据库类型对应的JDBC客户端,实现与不同类型的数据库连接,提高了灵活性。
请参见图2,示出了本发明实施例提供的一种ARM平台的C/C++应用程序访问非ARM平台数据库方法的信令图,该方法应用于图1所示的***中。如图2所示,该方法主要包括以下步骤:
S110,C/C++应用程序生成数据库访问请求,并调用部署在C/C++应用程序中的代理客户端发送所述数据库访问请求。
如图1所示,在C/C++应用程序中部署有代理客户端,此外,C/C++应用程序内部署有OTL、unixODBC接口和代理ODBC驱动模块。
基于图1所示的***,S110可以通过以下步骤实现:
C/C++应用程序基于OTL提供的接口访问数据库,并选择连接方式为ODBC;OTL调用标准的unixODBC接口,unixODBC接口调用代理ODBC驱动模块;代理ODBC驱动模块通过库连接调用代理客户端。
在本发明的一个实施例中,代理ODBC驱动模块实现标准的ODBC API接口,具体的接口由ODBC接口规范定义。
代理ODBC驱动模块主要用于调用代理客户端实现ODBC接口功能,而且,代理ODBC驱动模块在调用代理客户端之前对数据库访问请求中的数据库类型做类型适配和转换。此外,对于代理客户端返回相应的数据库执行结果后,代理ODBC驱动模块对数据库执行结果进行类型适配和转换。
例如,以Oralce数据库为例,ODBC驱动模块支持如下ODBC数据类型和Oralce数据类型的映射关系如表1所示:
表1
ODBC Data Type | Oracle Data Type |
SQL_BIGINT | NUMBER(19,0) |
SQL_BINARY | BLOB |
SQL_char | char |
SQL_DATE | DATE |
SQL_DECIMAL(p,s) | NUMBER(p,s) |
SQL_DOUBLE | FLOAT(49) |
SQL_FLOAT | FLOAT(49) |
SQL_INTEGER | NUMBER(10) |
SQL_LONGVARBINARY | BLOB |
SQL_LONGVARchar | CLOB |
SQL_NUMERIC(p,s) | NUMBER(p,s) |
SQL_REAL | FLOAT(23) |
SQL_SMALLINT | NUMBER(5) |
SQL_TIME | DATE |
SQL_TIMESTAMP | TIMESTAMP |
SQL_TINYINT | NUMBER(3) |
SQL_VARchar | VARchar2 |
C/C++应用程序通过OTL、unixODBC接口和代理ODBC驱动模块逐层接口调用实现对代理客户端的调用。C/C++应用程序通过调用代理客户端将将数据库访问请求转发至代理服务端端。
S120,代理客户端将数据库访问请求发送至代理服务端。
代理客户端将数据库访问请求通过TCP/IP网络协议发送至代理服务端。代理服务端是一个Java程序,可以运行在基于ARM架构的服务器中。
代理客户端和代理服务端之间实现一个基于会话(Session)的有状态远程过程调用(Romote Procedure Call,RPC)结构,实现对ODBC请求(即数据库访问请求)的代理转发。
其中,代理客户端可以基于成熟的RPC框架ApacheThrift C/C++实现。代理服务端可以采用成熟的RPC框架ApacheThrift Java实现。RPC接口定义如表2所示:
表2
RPC接口定义包 | 包内容说明 |
odbcrpc.idl | 总客户端请求/服务端应答消息包定义 |
odbcrpc_datatypes.idl | 数据类型定义 |
odbcrpc_connection.idl | 连接和会话定义 |
odbcrpc_crud.idl | 基本的SQL操作接口定义 |
odbcrpc_procedure.idl | 存储过程和函数操作接口定义 |
odbcrpc_prepared.idl | Prepared Statement接口定义 |
odbcrpc_resultset.idl | 结果集操作接口定义 |
odbcrpc_schema.idl | 元数据操作接口定义 |
S130,代理服务器解析数据库访问请求,并调用目标JDBC客户端访问目标类型数据库,得到相应的数据库执行结果。
其中,目标类型数据库为C/C++应用程序所请求访问的数据库。不同类型的数据库对应的JDBC客户端也不同,目标JDBC客户端是与目标类型数据库相对应的JDBC客户端。在本申请的一个实施例中,如图1所示,代理服务器内部署有代理服务端、JDBC后端功能代理模块和JDBC客户端,代理服务端调用与目标类型数据库对应的JDBC后端功能代理模块对数据库访问请求进行预处理;JDBC后端功能代理模块调用与目标类型数据库对应的JDBC客户端对预处理后的数据库访问请求进行处理以完成对目标类型数据库的操作。
S140,代理服务器将得到的数据库执行结果返回至代理客户端,并由代理客户端将数据库执行结果返回至C/C++应用程序。
进一步地,JDBC客户端在接收到数据库返回的执行结果后,调用JDBC后端功能代理模块对该执行结果进行解析,然后,JDBC后端功能代理模块将解析后的结果返回至代理服务端,代理服务端再将数据库执行结果返回至代理客户端,并由代理客户端返回至C/C++应用程序。
本实施例提供的ARM平台的C/C++应用程序访问非ARM平台数据库的方法,在C/C++应用程序中部署代理客户端,通过该代理客户端将C/C++应用程序产生的数据库访问请求发送至代理服务端,该代理服务端部署在基于ARM平台的服务器中。C/C++应用程序通过调用代理客户端实现ODBC接口。由代理服务端完成ODBC接口转换为JDBC接口的过程。利用该方案不需要针对每一个C/C++应用程序开发相应的ODBC接口转为JDBC接口的程序,因此,降低了开发难度,而且,可以在代理服务端部署多种不同数据库类型对应的JDBC客户端,实现与不同类型的数据库连接,提高了该方法的灵活性。
在本发明的一个实施例中,代理服务器内部署有代理服务端、JDBC后端功能代理模块、JDBC客户端。该实施例中,如图3所示,S130包括以下步骤:
S131,代理服务端解析数据库访问请求,获得C/C++应用程序要求访问的目标类型数据库。
代理服务端从数据库访问请求中解析获得C/C++应用程序所要访问的数据库类型,该类型的数据库即目标类型数据库。
S132,代理服务端调用部署在代理服务器中,且与目标类型数据库对应的JDBC后端功能代理模块,对数据库访问请求进行预处理。
不同类型的数据库对应不同的JDBC后端功能代理模块,例如,Oracle数据库对应OracleJDBC后端功能代理模块。
代理服务端调用目标类型数据库对应的JDBC后端功能代理模块对接收到的数据库访问请求进行如下预处理过程:
JDBC后端功能代理模块解析数据库访问请求中的接口操作和请求参数,并根据接口操作和请求参数,将代理客户端发送的数据库访问请求转换为相应的JDBC操作。
S133,JDBC后端功能代理模块调用与目标类型数据库对应的JDBC客户端对预处理后的数据库访问请求进行处理。
JDBC后端代理模块调用与目标类型数据库对应的JDBC客户端完成对目标类型数据库的访问操作。
例如,以Oracle数据库为例,JDBC后端功能代理模块解析数据库访问请求并将该数据库访问请求转换为相应的JDBC操作,然后,JDBC后端功能代理模块调用OracleJDBC客户端完成对Oracle数据库的访问。
仍以Oracle数据库为例,JDBC后端功能代理模块针对Oracle数据库能够同时实现以下几个数据库访问关键特性:
1)支持后端数据库预编译语句(PreparedStatement);
2)支持后端数据库连接池;
3)支持针对Unicode的可变长度字符编码(8-bit Unicode TransformationFormat,UTF-8)字符集,以及UTF-8字符集与不同字符集的适配和转换;
4)对Oracle数据类型的完整支持和适配;
5)对Oracle存储过程调用方式的完整支持;
6)对Oracle游标功能的完整支持。
S134,JDBC客户端解析预处理后的数据库访问请求,并根据解析结果访问目标类型数据库,得到相应的数据库执行结果。
JDBC后端功能代理模块调用JDBC客户端对JDBC操作进行解析,然后,JDBC客户端依据JDBC操作完成对数据库的访问,并获得数据库返回的执行结果。
本实施例提供的代理服务端,将基于ODBC操作转换为JDBC操作的过程,通过JDBC后端功能代理模块能够适配不同类型的后端数据库接口和用法之间的差异,从而,扩大了该方法所能适配的数据库范围,即提高了该方法的适用范围。
本申请提供了一种终端设备,该终端设备包括处理器和存储器,该存储器内存储有可在处理器上运行的程序。该处理器运行存储器内存储的该程序时实现上述的任一种ARM平台的C/C++应用程序访问数据库方法实施例中C/C++应用程序执行的步骤。本文中的终端设备可以是PC、PAD、手机等。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现上述的ARM平台的C/C++应用程序访问数据库方法实施例中代理服务器执行的步骤。本文中的代理服务器可以是基于ARM构架的服务器。
本申请还提供了一种计算设备可执行的存储介质,该存储介质中存储有程序,该程序由计算设备执行时实现上述的ARM平台的C/C++应用程序访问非ARM平台数据库方法。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例中的技术特征可以相互组合、替代,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请各实施例中的装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种ARM平台的C/C++应用程序访问数据库的方法,其特征在于,ARM平台的C/C++应用程序中部署有代理客户端,且在基于ARM平台的服务器上部署有代理服务端,所述方法包括:
所述C/C++应用程序生成数据库访问请求,并调用部署在所述C/C++应用程序中的代理客户端发送所述数据库访问请求;
所述代理客户端将所述数据库访问请求发送至所述代理服务器;
所述代理服务器解析所述数据库访问请求,并调用目标JDBC客户端访问目标类型数据库,得到相应的数据库执行结果,所述目标类型数据库为所述C/C++应用程序请求访问的数据库,所述目标JDBC客户端是与所述目标类型数据库相对应的JDBC客户端;
所述代理服务器将得到的数据库执行结果返回至所述代理客户端,并由所述代理客户端将所述数据库执行结果返回至所述C/C++应用程序。
2.根据权利要求1所述的方法,其特征在于,调用部署在C/C++应用程序中的代理客户端发送所述数据库访问请求,包括:
所述C/C++应用程序调用部署在该C/C++应用程序中的代理ODBC驱动模块将产生的数据库访问请求中的数据库数据类型转换为对应的ODBC数据类型;
所述代理ODBC驱动模块通过库连接调用所述代理客户端,将转换为ODBC数据类型的数据库访问请求转发至所述代理客户端。
3.根据权利要求1所述的方法,其特征在于,代理服务器中部署有代理服务端、JDBC后端功能代理模块和JDBC客户端;
所述代理服务器解析所述数据库访问请求,并调用目标JDBC客户端访问目标类型数据库,得到相应的数据库执行结果,包括:
所述代理服务端解析所述数据库访问请求,获得所述C/C++应用程序要求访问的目标类型数据库;
所述代理服务端调用部署在该代理服务器中且与所述目标类型数据库相对应的JDBC后端功能代理模块,对所述数据库访问请求进行预处理;
所述JDBC后端功能代理模块调用与所述目标类型数据库对应的JDBC客户端对预处理后的数据库访问请求进行解析;
所述JDBC客户端根据解析结果访问目标类型数据库,得到相应的数据库执行结果。
4.根据权利要求3所述的方法,其特征在于,所述代理服务端调用部署在该代理服务器中且与所述目标类型数据库相对应的JDBC后端功能代理模块,对所述数据库访问请求进行预处理,包括:
所述JDBC后端功能代理模块解析所述数据库访问请求中的接口操作和请求参数;
所述JDBC后端功能代理模块根据所述接口操作和所述请求参数将所述数据库访问请求转换为相应的JDBC操作。
5.根据权利要求4所述的方法,其特征在于,所述代理服务器将得到的数据库执行结果返回至所述代理客户端,包括:
所述JDBC客户端接收所述目标类型数据库返回的数据库执行结果,病调用所述JDBC后端功能代理模块对所述数据库执行结果进行解;
所述JDBC后端功能代理模块将解析结果返回至所述代理服务端;
所述代理服务端将所述数据库执行结果的解析结果发送至所述代理客户端。
6.一种ARM平台的C/C++应用程序访问数据库的***,其特征在于,包括:部署在ARM平台的C/C++应用程序,以及,部署在基于ARM平台的代理服务器,其中,所述C/C++应用程序中部署有代理客户端;
所述C/C++应用程序,用于生成数据库访问请求,并调用部署在所述C/C++应用程序中的代理客户端发送所述数据库访问请求,并由所述代理客户端将所述数据库访问请求发送至所述代理服务器;
所述代理服务器,用于解析所述数据库访问请求,并调用部署在所述代理服务器中的目标JDBC客户端访问目标类型数据库,得到相应的数据库执行结果,并将所述数据库执行结果返回至所述代理客户端,并由所述代理客户端将所述数据库执行结果返回至所述C/C++应用程序;
其中,所述目标类型数据库为所述C/C++应用程序请求访问的数据库,所述目标JDBC客户端是与所述目标类型数据库相对应的JDBC客户端。
7.根据权利要求6所述的***,其特征在于,所述C/C++应用程序调用部署在C/C++应用程序中的代理客户端发送所述数据库访问请求时,具体用于:
所述C/C++应用程序调用部署在该C/C++应用程序中的代理ODBC驱动模块将产生的数据库访问请求中的数据库数据类型转换为对应的ODBC数据类型;
所述代理ODBC驱动模块通过库连接调用所述代理客户端,将转换为ODBC数据类型的数据库访问请求转发至所述代理客户端。
8.根据权利要求6所述的***,其特征在于,代理服务器中部署有代理服务端、JDBC后端功能代理模块和JDBC客户端;
所述代理服务器用于解析所述数据库访问请求,并调用目标JDBC客户端访问目标类型数据库,得到相应的数据库执行结果时,具体用于:
所述代理服务端解析所述数据库访问请求,获得所述C/C++应用程序要求访问的目标类型数据库;
所述代理服务端调用部署在该代理服务器中且与所述目标类型数据库相对应的JDBC后端功能代理模块,对所述数据库访问请求进行预处理;
所述JDBC后端功能代理模块调用与所述目标类型数据库对应的JDBC客户端对预处理后的数据库访问请求进行解析;
所述JDBC客户端根据解析结果访问目标类型数据库,得到相应的数据库执行结果。
9.根据权利要求8所述的***,其特征在于,所述代理服务端调用部署在该代理服务器中且与所述目标类型数据库相对应的JDBC后端功能代理模块,对所述数据库访问请求进行预处理时,具体用于:
所述JDBC后端功能代理模块解析所述数据库访问请求中的接口操作和请求参数;
所述JDBC后端功能代理模块根据所述接口操作和所述请求参数将所述数据库访问请求转换为相应的JDBC操作。
10.根据权利要求9所述的***,其特征在于,所述代理服务器将得到的数据库执行结果返回至所述代理客户端时,具体用于:
所述JDBC客户端接收所述目标类型数据库返回的数据库执行结果,病调用所述JDBC后端功能代理模块对所述数据库执行结果进行解;
所述JDBC后端功能代理模块将解析结果返回至所述代理服务端;
所述代理服务端将所述数据库执行结果的解析结果发送至所述代理客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011347050.9A CN112364087A (zh) | 2020-11-26 | 2020-11-26 | Arm平台的c/c++应用程序访问数据库的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011347050.9A CN112364087A (zh) | 2020-11-26 | 2020-11-26 | Arm平台的c/c++应用程序访问数据库的方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112364087A true CN112364087A (zh) | 2021-02-12 |
Family
ID=74534077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011347050.9A Pending CN112364087A (zh) | 2020-11-26 | 2020-11-26 | Arm平台的c/c++应用程序访问数据库的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112364087A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113206844A (zh) * | 2021-04-28 | 2021-08-03 | 北京链道科技有限公司 | 防止数据泄露的数据共享方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102739654A (zh) * | 2012-06-08 | 2012-10-17 | 北京久其软件股份有限公司 | 一种实现应用程序访问数据库的方法 |
CN103488765A (zh) * | 2013-09-28 | 2014-01-01 | 雷虹 | 一种代理数据库的访问驱动及其数据访问方法 |
CN104794147A (zh) * | 2013-12-30 | 2015-07-22 | 深圳键桥通讯技术股份有限公司 | 异构数据库访问方法 |
WO2016184175A1 (zh) * | 2015-05-21 | 2016-11-24 | 中兴通讯股份有限公司 | 数据库处理方法及装置 |
CN110413676A (zh) * | 2019-07-25 | 2019-11-05 | 中国工商银行股份有限公司 | 数据库的访问方法及其装置、电子设备和介质 |
CN110582768A (zh) * | 2017-05-10 | 2019-12-17 | 西门子股份公司 | 用于提供安全数据库访问的装置和方法 |
-
2020
- 2020-11-26 CN CN202011347050.9A patent/CN112364087A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102739654A (zh) * | 2012-06-08 | 2012-10-17 | 北京久其软件股份有限公司 | 一种实现应用程序访问数据库的方法 |
CN103488765A (zh) * | 2013-09-28 | 2014-01-01 | 雷虹 | 一种代理数据库的访问驱动及其数据访问方法 |
CN104794147A (zh) * | 2013-12-30 | 2015-07-22 | 深圳键桥通讯技术股份有限公司 | 异构数据库访问方法 |
WO2016184175A1 (zh) * | 2015-05-21 | 2016-11-24 | 中兴通讯股份有限公司 | 数据库处理方法及装置 |
CN110582768A (zh) * | 2017-05-10 | 2019-12-17 | 西门子股份公司 | 用于提供安全数据库访问的装置和方法 |
US20200202031A1 (en) * | 2017-05-10 | 2020-06-25 | Siemens Aktiengesellschaft | Apparatus and method for providing a secure database access |
CN110413676A (zh) * | 2019-07-25 | 2019-11-05 | 中国工商银行股份有限公司 | 数据库的访问方法及其装置、电子设备和介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113206844A (zh) * | 2021-04-28 | 2021-08-03 | 北京链道科技有限公司 | 防止数据泄露的数据共享方法 |
CN113206844B (zh) * | 2021-04-28 | 2022-06-07 | 北京链道科技有限公司 | 防止数据泄露的数据共享方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6012067A (en) | Method and apparatus for storing and manipulating objects in a plurality of relational data managers on the web | |
US10635675B2 (en) | Supporting pluggable databases with heterogeneous database character sets in a container database | |
US7260577B1 (en) | Method and system for providing business intelligence web content with reduced client-side processing | |
US8321450B2 (en) | Standardized database connectivity support for an event processing server in an embedded context | |
US5899990A (en) | Java-to-Database Connectivity Server | |
US8387076B2 (en) | Standardized database connectivity support for an event processing server | |
US9081835B2 (en) | Edge deployed database proxy driver | |
EP1522031B1 (en) | System and method for caching data for a mobile application | |
US6571232B1 (en) | System and method for browsing database schema information | |
US20130060803A1 (en) | Database translation system and method | |
CN101206648A (zh) | 网络服务生成***及方法 | |
US7689703B2 (en) | Systems and methods of utilizing and expanding standard protocol | |
CN112364087A (zh) | Arm平台的c/c++应用程序访问数据库的方法及*** | |
AU757734B2 (en) | Method for handling data items of user-defined data types | |
US20080154861A1 (en) | System and method for retrieving data from different types of data sources | |
CN116974948B (zh) | 业务***测试方法、***、设备和介质 | |
US7310631B2 (en) | Method and system for facilitating access to external data | |
WO2021093671A1 (zh) | 任务处理方法、***、装置、设备及计算机可读存储介质 | |
KR20100132752A (ko) | 데이터베이스 분산을 통한 서비스 성능 향상을 위한 질의 데이터 분산 처리시스템 | |
KR100479333B1 (ko) | ebXML 레지스트리에 기반을 둔 UDDI 웹서비스레지스트리 시스템과 그 관리 방법 | |
CN114979279A (zh) | 一种用于数据请求的微服务模块调度方法 | |
CN111782428B (zh) | 数据调用***以及方法 | |
US20090300663A1 (en) | Apparatus and system for producing atom feeds with j2ca adapters | |
CN112163029A (zh) | 一种虚拟数据库***及查询方法 | |
US20050050298A1 (en) | Method and system for mapping open grid services architecture service data to native resource representation |
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 |