掌桥专利:专业的专利平台
掌桥专利
首页

一种通用数据库驱动适配接口系统

文献发布时间:2023-06-19 09:33:52


一种通用数据库驱动适配接口系统

技术领域

本发明涉及数据库驱动或数据库调用技术,特别是一种通用数据库驱动适配接口系统,通过设置适配接入接口和适配操作接口,所述适配接入接口通过业务流程控制引擎与某业务系统相连接,所述适配操作接口与数据库相连且能够屏蔽不同数据库之间驱动接口的差异以将应用开发与数据库调用接口进行解耦,有利于解除开发者选择新数据库时对生产厂商和版本的限制,使开发者具有更大的灵活性和自由度,同时其通用性较好地降低了系统开发工作量,缩短了项目实施周期,降低了项目实施成本和维护费用。

背景技术

数据库驱动是不同数据库开发商(比如Oracle、Mysql、KingBase等)针对某种开发语言环境(比如java或者C)专门实现的数据库调用程序,它将对应开发语言中对数据库的调用语言通过这个程序翻译成各个种类的数据库自己的数据库语言,当然这个翻译(数据库驱动)是由各个开发商针对统一的接口自定义开发的。主流驱动包括ODBC/JDBC驱动接口、混合驱动接口和API接口。ODBC/JDBC驱动接口:基于一组符合规范的API驱动接口,需要安装对应数据库的ODBC/JDBC驱动。混合驱动接口:例如Oralce的Proc、Ibm Db2的db2prep,db2 bind、KingBase Esql等,可以直接与开发语言混合编程使用。API接口:例如Mysql的API接口等,可以直接在开发语言中调用。目前的主流数据库包括Oracle、Mysql、Ibm Db2、KingBase等。由于数据库由不同厂商提供,导致对同一类型数据库存在多种不同使用情况,操作系统必须安装对应数据库驱动或者部署开发库,开发者则针对不同的驱动库进行对应开发才能使用数据库。

针对上述情况,在进行相关系统开发时,一般将面临以下问题:1)在系统开发时,数据库驱动虽然与应用功能无关,但无法将系统应用功能与数据库驱动进行良好的分离,紧耦合的模式导致每新增或更换一种数据库,都需要对系统代码进行较大的增补或修改。2)在系统开发时,每一种不同数据库都需要编制相应的数据库适配代码或者二次开发,开发工作量大,开发周期长,系统稳定性不佳。3)在系统运行时,当数据库出现故障时,无法进行灵活的数据库切换,维护不便。4)在系统开发和运行时,不同数据库对开发和运维技术人员的技术水平要求较高,增加了系统整体成本。

发明内容

本发明针对现有技术的缺陷或不足,提供一种通用数据库驱动适配接口系统,通过设置适配接入接口和适配操作接口,所述适配接入接口通过业务流程控制引擎与某业务系统相连接,所述适配操作接口与数据库相连且能够屏蔽不同数据库之间驱动接口的差异以将应用开发与数据库调用接口进行解耦,有利于解除开发者选择新数据库时对生产厂商和版本的限制,使开发者具有更大的灵活性和自由度,同时其通用性较好地降低了系统开发工作量,缩短了项目实施周期,降低了项目实施成本和维护费用。

本发明的技术方案如下:

一种通用数据库驱动适配接口系统,其特征在于,包括适配接入接口和适配操作接口,所述适配接入接口通过业务流程控制引擎与业务系统相连接,所述适配操作接口与数据库相连且能够屏蔽不同数据库之间驱动接口的差异以将应用开发与数据库调用接口进行解耦。

所述业务流程控制引擎包括以下模块:某业务系统启动数据库连接/支持断开重连,报文解包,相关数据库操作的增/删/改/查,对相关数据库操作的结果进行数据处理报文打包,通讯处理或与其他系统通讯,报文解包数据处理,报文打包,返回数据包到所述某业务系统。

所述数据库为关系型数据库或分布式数据库,所述关系型数据库包括Oracle、Mysql、Ibm Db2、Ibm Informix或人大金仓KingBase,所述分布式数据库包括上海爱可生Dlbe、上海热噗hotdb、北京平凯星辰TiDB、巨杉SequoiaDB或开源数据库中间件MyCat。

所述适配接入接口包括以下各项:pbDb_ConnectDatabase()连接数据库;pbDb_DisconnectDatabase()断开数据库;pbDb_CommitTran()提交数据库;pbDb_CommitRelease()提交数据库并断开;pbDb_RollbackTran()回滚数据库操作;pbDb_RollbackRelease()回滚并断开数据库。

所述适配操作接口包括以下各项:pbDb_Insert_Record()增加记录;pbDb_Insert_Records()针对支持绑定模式的增加记录;pbDb_Delete_Record()删除记录;pbDb_Delete_Records()针对支持绑定模式的删除记录;pbDb_Update_Record()更新记录;pbDb_Update_Records()针对支持绑定模式的更新记录;pbDb_Select_Record()查询记录;pbDb_Select_Records()针对支持绑定模式的查询记录;pbDb_Get_RecordNums()针对单笔查询的获取记录数;pbDb_Get_RecordNumsWithSql()针对多笔联查的获取记录数。

还包括以下各项数据库其他接口:1)pbDb_GetTableColNum()获取指定表字段条数;2)pbDb_GetColumnNoByIndexType()获取指定表索引;3)pbDb_CheckTableExists()检查表是否存在;4)pbDb_GetTableDef()获取指定表定义;5)pbDb_GetColumnDef()获取指定表列定义;6)pbDb_TableToBuff()导出指定表到缓存;7)pbDb_TableToFile()导入指定表到文件;8)pbDb_FileToTable()导入文件到指定表;9)pbDb_TableTo_String()导出指定表数据到字符串。

还包括以下各项特殊处理接口:①pbDb_GenSqlString_WithPages()分页操作语句;②pbDb_ToChar()字符串转换;③pbDb_GenSelFldStr()字符串拼接;④pbDb_ToDateChar()日期转换;⑤pbDb_Get_DynSequenceNo()序列操作;⑥pbDb_SetSQLCODE()错误码设置;⑦pbDb_SetSQLMSG()错误描述设置。

还包括以下各项数据库常用函数转换通用接口:(1)PBDB_NVL空判断;(2)PBDB_TOUPPER大小转换;(3)PBDB_TOUPPER小写转换;(4)PBDB_CONCAT字段拼接;(5)PBDB_TRIM字段去除左右空格;(6)PBDB_TOCHAR转换为字符串;(7)PBDB_SUM求和;(8)PBDB_MAX取最大值;(9)PBDB_SUBSTR截取字符串;(10)PBDB_LENGTH字符串取长度;(11)PBDB_TODATE转换日期;(12)PBDB_SYSDATE获取系统日期;(13)PBDB_ADDDATE增加日期;(14)PBDB_ADDMONTH增加月份;(15)PBDB_ROWNUM获取记录行号;(16)PBDB_TOHEX转换为16进制。

通用数据库驱动适配接口API在数据库应用系统中通过静态库libpbdbcomm.a和动态库libpbdbcomm.so提供以支持AIX/HP-UX/Linux多种操作系统版本,对于静态库方式,通过将库文件编译链接至目标程序,在代码中直接调用相应的API;对于动态库方式,通过将库文件放置在环境变量LD_LIBRARY_PATH所指向的目录,在代码中通过dlopen()方式打开后,直接调用相应的API。

通用数据库驱动适配接口API通过宏在预编译时进行以下各项定制以支持不同数据库对表的支持差异:[1]通过宏MAX_SQLSTR_LENGTH控制操作语句的长度;[2]通过宏MAX_INSERT_ITEMS控制插入字段个数;[3]通过宏MAX_WHERE_ITEMS控制条件个数;[4]通过宏MAX_UPDATE_ITEMS控制更新字段个数;[5]通过宏MAX_SELECT_ITEMS控制查询字段个数;[6]通过宏FETCH_SIZE控制单次查询返回记录数大小;[7]通过宏MAX_VALUESTR_LENGTH控制单个字段返回记录值大小。

通用数据库驱动适配接口包括开发者自定义语句的以下各项接口:<1>自定义插入语句接口INSERT_STRUCT.sInsertSql;<2>自定义删除语句接口DELETE_STRUCT.sDeleteSql;<3>自定义修改语句接口UPDATE_STRUCT.sUpdateSql;<4>自定义查询语句接口SELECT_STRUCT.sSelectSql。

所述适配操作接口通过动态数组支持对增、删、改、查的字段动态设定及变量绑定以支持不同数据库对是否绑定带来的差异,对于支持绑定的数据库,通用数据库驱动适配接口自动根据开发之调用接口后传递的字段、条件自动生成绑定语句,并将执行结果返回给用户。

通用数据库驱动适配接口包括序列支持,通过在环境变量SEQ_MODE设置调用不同的序列获取分支,通过增加序列缓存以高效获取序列。

通用数据库驱动适配接口包括监控模块,所述监控模块通过通用数据库驱动适配接口日志文件掌握数据库驱动适配接口运行情况以对通用数据库适配接口运行问题的定位和分析。

本发明的技术效果如下:本发明一种通用数据库驱动适配接口系统,包括根据本发明人多年来从事多种数据库开发及数据库适配编写经验,抽象和提炼出符合国内开发者使用的数据库的一系列通用化API。本发明具有以下特点:1)接口规范覆盖面广:本发明针对目前国内开发者使用数据库的现实需求进行设计,基本涵盖了国内主流数据库的类型和不同版本。2)自主可控:本发明在应对系统安全风险、落实自主可控要求方面入手,提升了自主研发能力,在数据库关键领域实现自主研发,实现了技术突破。3)接口规范扩展灵活:本发明设计的接口规范,具有较强的可扩展性,且扩展灵活方便,可自动适配具体的函数接口,在新增或者改变不同类型数据库时,一般只需简单调整/新增代码重新编译对应数据库接口库即可。4)提供详细运行日志:本发明在API运行态提供详细的运行日志级别,并可根据开发者需要在服务或者程序在运行状态时进行灵活设置并进行记录及对应日志级别设置,方便记录使用数据库接口的运行情况,快速定位或者跟踪数据库使用或者运行情况。

本发明相具有以下优势:1)支持的数据库产品类型众多:本发明支持目前市场主流的数据库类型,经过充分的测试验证,已可以支持的数据库类型包括:Oracle、Ibm Db2、Mysql、KingBase等。2)支持的产品接口众多:本发明支持目前市场上主流的数据库接口,经过充分的测试验证,已可以支持的数据库厂商包括:Oracle,IBM DB2,Mysql、KingBase等,接口包括支持基于混合编程的接口:Proc,Esql,isql,基于API的Mysql接口,基于厂商提供的ODBC通用接口等。3)数据库接入方式简便:本发明对于目前通用API已经支持的数据库类型,对于新增的数据库,只需要进行一次基于通用接口的修改即可适配多种类型的数据库,后续新增其他通用接口支持的数据库,无需编程,只需简单配置或重新编译即可快速接入。同时针对不同开发者提供了基于混合编程模式的通用接口及基于ODBC驱动的统一的通用封装接口,屏蔽了底层驱动开发的复杂性,开发者不需要了解底层驱动或者接口的复杂配置或者编程规范,只需关注应用逻辑即可,带来了开发的便利性和简洁性。4)支持复杂的数据库接入模式:本发明支持多种复杂的数据库组合连接模式,支持同时运行多种不同类型的数据库,同时亦支持在不同的开发者端上运行类型相同但数据库不同、版本不同的数据库。5)运行态切换灵活:本发明支持开发者端实时增加/更换相关数据库,数据库切换后在长连接模式下通过开关设置,使用内部自带数据库状态断开重连检查机制,程序或服务做到无需重启动即可生效,方便灵活。6)可复用API接口,实施周期短成本低:本发明通过经过实践验证,API能够大限度复用,达到缩短项目实施周期,降低项目实施成本的目标。

国内相关行业在数据库驱动控制及开发一直是比较复杂的,特别是随着国内应用的飞速发展,使用场景越来越复杂,对数据库的使用越来越广泛,同时有更多的国内外数据库厂商进入市场,不同数据库厂商支持的渠道类型不同,有的支持API接入,有的通过混合接口,有的支持ODBC或者JDBC接口。随着更多的新型数据库在相关应用系统中得到应用,要将如此众多的数据库快速接入系统,并能够支持新厂商、新类型、新版本的灵活扩展,的确是一件非常困难的工作。发明人在相关领域具有丰富的实施经验,通过不断钻研和实践,在初始API原型基础上进行了大量验证,并持续进行完善和改进,成功实现了通用数据库驱动适配接口的设计与实现,并在国内多个大型开发者的多个应用系统中成功应用,在加快项目实施进度、降低项目实施成本方面均得到了良好的验证;与其他数据库适配器相比,具有较为明显的领先优势。

本发明提供的一系列通用的数据库驱动适配接口,对目前主流数据库厂商的数据库及不同版本均能够进行良好支持;同时,该通用接口在设计上体现了有良好的前瞻性,能够根据需要进行灵活扩展,快速接入新类型和型号的数据库产品;为相关系统使用不同数据库的开发提供了良好的技术支撑。

附图说明

图1是本发明一种通用数据库驱动适配接口系统在数据库应用系统中的位置示意图。图1中数据库应用系统包括数据库,所述数据库为关系型数据库(例如:Oracle、Mysql、Ibm Db2、Ibm Informix、人大金仓KingBase等)或分布式数据库(例如:上海爱可生Dlbe、上海热噗hotdb、北京平凯星辰TiDB、巨杉SequoiaDB、开源数据库中间件MyCat等),通用数据库驱动接口即本发明通用数据库驱动适配接口系统通过适配操作接口与所述数据库相连接并屏蔽不同数据库之间驱动接口的差异以将应用开发与数据库调用接口进行解耦,所述通用数据库驱动适配接口系统通过适配接入接口通过业务流程控制引擎与某业务系统相连接,所述业务流程控制引擎包括以下模块:某业务系统启动数据库连接/支持断开重连,报文解包,相关数据库操作的增/删/改/查,对相关数据库操作的结果进行数据处理报文打包,通讯处理或与其他系统通讯,报文解包数据处理,报文打包,返回数据包到所述某业务系统。

图2是实施本发明一种通用数据库驱动适配接口系统的结构示意图。图2中通用数据库接口即本发明通用数据库驱动适配接口系统包括适配接入接口和适配操作接口,所述适配接入接口通过业务流程控制引擎与某业务系统相连接,所述适配操作接口包括基于Oracle数据库的驱动适配接口和基于Mysql数据库的驱动适配接口,所述基于Oracle数据库的驱动适配接口包括增加数据接口/删除数据接口/修改数据接口/查询数据接口/序列操作接口/其他操作接口,所述基于Mysql数据库的驱动适配接口包括增加数据接口/删除数据接口/修改数据接口/查询数据接口/序列操作接口/其他操作接口。

图3是本发明一种通用数据库驱动适配接口系统的工作流程示意图。图3中包括从开始到通用接口调用,再到完成业务数据处理,最后到结束,所述通用接口调用包括连接数据库(设置连接句柄,基于api或者odbc)、调用接入接口/初始化SQLCODE、生成序列/根据业务需要调用增/删/改/查接口、调用接入接口/设置SQLCODE及SQLMSG、完成业务数据操作/根据SQLCODE决定后续处理、释放数据库连接通用接口(根据业务需要调用)。

图4是本发明通用数据库驱动适配接口系统能够支持的数据库设备类型及其厂商示意图。

具体实施方式

下面结合附图(图1-图4)对本发明进行说明。

图1是本发明一种通用数据库驱动适配接口系统在数据库应用系统中的位置示意图。图2是实施本发明一种通用数据库驱动适配接口系统的结构示意图。图3是本发明一种通用数据库驱动适配接口系统的工作流程示意图。图4是本发明通用数据库驱动适配接口系统能够支持的数据库设备类型及其厂商示意图。参考图1至图4,一种通用数据库驱动适配接口系统,包括适配接入接口和适配操作接口,所述适配接入接口通过业务流程控制引擎与业务系统相连接,所述适配操作接口与数据库相连且能够屏蔽不同数据库之间驱动接口的差异以将应用开发与数据库调用接口进行解耦。所述业务流程控制引擎包括以下模块:某业务系统启动数据库连接/支持断开重连,报文解包,相关数据库操作的增/删/改/查,对相关数据库操作的结果进行数据处理报文打包,通讯处理或与其他系统通讯,报文解包数据处理,报文打包,返回数据包到所述某业务系统。所述数据库为关系型数据库或分布式数据库,所述关系型数据库包括Oracle、Mysql、Ibm Db2、Ibm Informix或人大金仓KingBase,所述分布式数据库包括上海爱可生Dlbe、上海热噗hotdb、北京平凯星辰TiDB、巨杉SequoiaDB或开源数据库中间件MyCat。

所述适配接入接口包括以下各项:pbDb_ConnectDatabase()连接数据库;pbDb_DisconnectDatabase()断开数据库;pbDb_CommitTran()提交数据库;pbDb_CommitRelease()提交数据库并断开;pbDb_RollbackTran()回滚数据库操作;pbDb_RollbackRelease()回滚并断开数据库。

所述适配操作接口包括以下各项:pbDb_Insert_Record()增加记录;pbDb_Insert_Records()针对支持绑定模式的增加记录;pbDb_Delete_Record()删除记录;pbDb_Delete_Records()针对支持绑定模式的删除记录;pbDb_Update_Record()更新记录;pbDb_Update_Records()针对支持绑定模式的更新记录;pbDb_Select_Record()查询记录;pbDb_Select_Records()针对支持绑定模式的查询记录;pbDb_Get_RecordNums()针对单笔查询的获取记录数;pbDb_Get_RecordNumsWithSql()针对多笔联查的获取记录数。

还包括以下各项数据库其他接口:1)pbDb_GetTableColNum()获取指定表字段条数;2)pbDb_GetColumnNoByIndexType()获取指定表索引;3)pbDb_CheckTableExists()检查表是否存在;4)pbDb_GetTableDef()获取指定表定义;5)pbDb_GetColumnDef()获取指定表列定义;6)pbDb_TableToBuff()导出指定表到缓存;7)pbDb_TableToFile()导入指定表到文件;8)pbDb_FileToTable()导入文件到指定表;9)pbDb_TableTo_String()导出指定表数据到字符串。还包括以下各项特殊处理接口:①pbDb_GenSqlString_WithPages()分页操作语句;②pbDb_ToChar()字符串转换;③pbDb_GenSelFldStr()字符串拼接;④pbDb_ToDateChar()日期转换;⑤pbDb_Get_DynSequenceNo()序列操作;⑥pbDb_SetSQLCODE()错误码设置;⑦pbDb_SetSQLMSG()错误描述设置。

还包括以下各项数据库常用函数转换通用接口:(1)PBDB_NVL空判断;(2)PBDB_TOUPPER大小转换;(3)PBDB_TOUPPER小写转换;(4)PBDB_CONCAT字段拼接;(5)PBDB_TRIM字段去除左右空格;(6)PBDB_TOCHAR转换为字符串;(7)PBDB_SUM求和;(8)PBDB_MAX取最大值;(9)PBDB_SUBSTR截取字符串;(10)PBDB_LENGTH字符串取长度;(11)PBDB_TODATE转换日期;(12)PBDB_SYSDATE获取系统日期;(13)PBDB_ADDDATE增加日期;(14)PBDB_ADDMONTH增加月份;(15)PBDB_ROWNUM获取记录行号;(16)PBDB_TOHEX转换为16进制。通用数据库驱动适配接口API在数据库应用系统中通过静态库libpbdbcomm.a和动态库libpbdbcomm.so提供以支持AIX/HP-UX/Linux多种操作系统版本,对于静态库方式,通过将库文件编译链接至目标程序,在代码中直接调用相应的API;对于动态库方式,通过将库文件放置在环境变量LD_LIBRARY_PATH所指向的目录,在代码中通过dlopen()方式打开后,直接调用相应的API。通用数据库驱动适配接口API通过宏在预编译时进行以下各项定制以支持不同数据库对表的支持差异:[1]通过宏MAX_SQLSTR_LENGTH控制操作语句的长度;[2]通过宏MAX_INSERT_ITEMS控制插入字段个数;[3]通过宏MAX_WHERE_ITEMS控制条件个数;[4]通过宏MAX_UPDATE_ITEMS控制更新字段个数;[5]通过宏MAX_SELECT_ITEMS控制查询字段个数;[6]通过宏FETCH_SIZE控制单次查询返回记录数大小;[7]通过宏MAX_VALUESTR_LENGTH控制单个字段返回记录值大小。通用数据库驱动适配接口包括开发者自定义语句的以下各项接口:<1>自定义插入语句接口INSERT_STRUCT.sInsertSql;<2>自定义删除语句接口DELETE_STRUCT.sDeleteSql;<3>自定义修改语句接口UPDATE_STRUCT.sUpdateSql;<4>自定义查询语句接口SELECT_STRUCT.sSelectSql。

所述适配操作接口通过动态数组支持对增、删、改、查的字段动态设定及变量绑定以支持不同数据库对是否绑定带来的差异,对于支持绑定的数据库,通用数据库驱动适配接口自动根据开发之调用接口后传递的字段、条件自动生成绑定语句,并将执行结果返回给用户。通用数据库驱动适配接口包括序列支持,通过在环境变量SEQ_MODE设置调用不同的序列获取分支,通过增加序列缓存以高效获取序列。通用数据库驱动适配接口包括监控模块,所述监控模块通过通用数据库驱动适配接口日志文件掌握数据库驱动适配接口运行情况以对通用数据库适配接口运行问题的定位和分析。

本发明为达到通用数据库驱动适配接口的通用性,从以下几个方面进行设计和约定。

一、通用数据库驱动适配接口结构:如图2所示,通用数据库驱动接口向上为相关应用模块提供服务(执行数据库操作和返回应用数据或者操作结果),向下驱动相关数据库(写入或读出数据库数据或者执行结果)。

通用数据库驱动适配接口分为接入接口及操作接口:1)通用数据库驱动适配操作接入接口,包括连接数据库、断开数据库、提交事务、回滚事务等API。2)通用数据库驱动适配操作处理接口:针对不同的数据库,依据其驱动方式方法的不同,提供特定的一组通用API。例如:对于Oracle数据库,提供增加、删除、修改、查询、游标操作、数据库绑定操作、数据记录分页、获取主键、获取外键、获取索引、序列操作、数据导入、数据导出、获取数据库字段定义及长度等多个API。

二、通用数据库驱动接口工作流程:如图3所示,通用数据库驱动接口工作流程:调用通用驱动适配接入接口(完成连接数据库、设置连接句柄(mysql等数据库,oracle使用Proc混合编程接口不需要连接句柄)),然后调用针对不同数据库的对应数据库通用驱动接口(例如:增加数据、删除数据、查询数据等),最后调用通用驱动接入接口(完成数据库提交,数据库断开等操作),完成对应数据库驱动的全部过程。

三、通用数据库驱动适配接口主要API设计:

1、通用驱动适配接入接口主要API:

1)连接数据库:pbDb_ConnectDatabase()

2)断开数据库:pbDb_DisconnectDatabase()

3)提交数据库:pbDb_CommitTran()

4)提交数据库并断开:pbDb_CommitRelease()

5)回滚数据库操作:pbDb_RollbackTran()

6)回滚并断开数据库:pbDb_RollbackRelease()

2、数据库通用驱动适配操作接口主要API:

1)增加记录:pbDb_Insert_Record()

2)增加记录(支持绑定模式):pbDb_Insert_Records()

3)删除记录:pbDb_Delete_Record()

4)删除记录(支持绑定模式):pbDb_Delete_Records()

5)更新记录:pbDb_Update_Record()

6)更新记录(支持绑定模式):pbDb_Update_Records()

7)查询记录:pbDb_Select_Record()

8)查询记录(支持绑定模式):pbDb_Select_Records()

9)获取记录数(单笔查询):pbDb_Get_RecordNums()

10)获取记录数(多笔联查):pbDb_Get_RecordNumsWithSql()

3、数据库其他接口API:

1)获取指定表字段条数:pbDb_GetTableColNum()

2)获取指定表索引:pbDb_GetColumnNoByIndexType()

3)检查表是否存在:pbDb_CheckTableExists()

4)获取指定表定义:pbDb_GetTableDef()

5)获取指定表列定义:pbDb_GetColumnDef()

6)导出指定表到缓存:pbDb_TableToBuff()

7)导入指定表到文件:pbDb_TableToFile()

8)导入文件到指定表:pbDb_FileToTable()

9)导出指定表数据到字符串:pbDb_TableTo_String()

4、特殊处理接口API:

1)分页操作语句:pbDb_GenSqlString_WithPages()

2)字符串转换:pbDb_ToChar()

3)字符串拼接:pbDb_GenSelFldStr()

4)日期转换:pbDb_ToDateChar()

5)序列操作:pbDb_Get_DynSequenceNo()

6)错误码设置:pbDb_SetSQLCODE()

7)错误描述设置:pbDb_SetSQLMSG()

5、数据库常用函数转换通用API:

1)空判断:PBDB_NVL

2)大小转换:PBDB_TOUPPER

3)小写转换:PBDB_TOUPPER

4)字段拼接:PBDB_CONCAT

5)字段去除左右空格:PBDB_TRIM

6)转换为字符串:PBDB_TOCHAR

7)求和:PBDB_SUM

8)取最大值:PBDB_MAX

9)截取字符串:PBDB_SUBSTR

10)字符串取长度:PBDB_LENGTH

11)转换日期:PBDB_TODATE

12)获取系统日期:PBDB_SYSDATE

13)增加日期:PBDB_ADDDATE

14)增加月份:PBDB_ADDMONTH

15)获取记录行号:PBDB_ROWNUM

16)转换为16进制:PBDB_TOHEX

四、通用数据库驱动适配接口API使用

1、通用数据库驱动适配接口API使用方法:通过数据库驱动适配接口API采用静态库(libpbdbcomm.a)和动态库(libpbdbcomm.so)两种方式提供,支持AIX/HP-UX/Linux多种操作系统版本。1)对于静态库(libpbdbcomm.a)方式,具有更高的执行效率。需要将上述库文件编译链接至目标程序,在代码中直接调用相应的API。2)对于动态库(libpbdbcomm.so)方式,具有更好的灵活性。需要将上述库文件放置在环境变量LD_LIBRARY_PATH所指向的目录,在代码中通过dlopen()方式打开后,直接调用相应的API。

2、通用数据库驱动适配API接口主要结构(增、删、改、查):为支持不同数据库对表的支持字段个数、操作语句的长度、单字段可存储内容大小等的差异,通过宏在预编译时进行定制。

通过以下关键编译宏支持不同数据库对表的支持差异:

1)通过宏MAX_SQLSTR_LENGTH控制操作语句的长度

2)通过宏MAX_INSERT_ITEMS 控制插入字段个数

3)通过宏MAX_WHERE_ITEMS 控制条件个数

4)通过宏MAX_UPDATE_ITEMS 控制更新字段个数

5)通过宏MAX_SELECT_ITEMS 控制查询字段个数

6)通过宏FETCH_SIZE控制单次查询返回记录数大小

7)通过宏MAX_VALUESTR_LENGTH控制单个字段返回记录值大小

通过自定义语句适应复杂操作语句:对于某些使用数据库比较复杂的场景,通用数据库适配器接口提供了开发者自定义语句的接口,开发者只需要调用对应接口进行设置即可,接口会根据自动判断开发者是否传递此语句执行响应操作并返回指向结果。

1)自定义插入语句接口:INSERT_STRUCT.sInsertSql

2)自定义删除语句接口:DELETE_STRUCT.sDeleteSql

3)自定义修改语句接口:UPDATE_STRUCT.sUpdateSql

4)自定义查询语句接口:SELECT_STRUCT.sSelectSql

主要操作接口结构:为支持不同数据库对是否绑定带来的差异,通过动态数组支持对增、删、改、查的字段动态设定及变量绑定。对于支持绑定的数据库,通用数据库驱动适配接口会自动根据开发之调用接口后传递的字段、条件自动生成绑定语句,并将执行结果返回给用户。

1)插入数据库

2)删除数据库

3)修改数据库

4)查询数据库

3、通用数据库驱动适配接口序列支持:不同数据库支持序列不同,例如Oracle支持序列,Mysql等部分数据库没有原生序列支持,通用数据库API通过4种不同方式进行支持序列实现,但调用接口只都是:pbDb_Get_DynSequenceNo():

1)序列模式:

2)序列缓存

通过在环境变量SEQ_MODE设置调用不同的序列获取分支,通过增加序列缓存,达到高效获取序列的目的。

4、通用数据库驱动适配接口监控:可以通过通用数据库驱动适配接口日志文件,掌握数据库驱动适配接口运行情况,同时便于对数据库适配接口运行问题的定位和分析。

在此指明,以上叙述有助于本领域技术人员理解本发明创造,但并非限制本发明创造的保护范围。任何没有脱离本发明创造实质内容的对以上叙述的等同替换、修饰改进和/或删繁从简而进行的实施,均落入本发明创造的保护范围。

相关技术
  • 一种通用数据库驱动适配接口系统
  • 一种通用数据库访问中自动适配对象的方法
技术分类

06120112213424