使用OTL连接数据库
发布日期:2021-11-15 14:58:02 浏览次数:68 分类:技术文章

本文共 1838 字,大约阅读时间需要 6 分钟。

在使用C++连接数据库的时候,你可以选择ODBC或者ADO等方式,但是OTL连接数据库确实挺方便的,它所有的代码都放在一个头文件otlv4.h中,我们在写程序的时候直接将头文件包含进来,就可以调用其中的类中的函数进行数据库的连接,增删改查等操作。最近一直在使用Oracle数据库,这次就使用OTL连接Oracle数据库,Oracle数据库提供一个调用的接口(OCI),是Oracle公司开发的一个应用程序开发工具,是一个通过访问Oracle数据库的服务器,控制各类sql语句的执行,进而创建应用程序接口(API),OTL就是通过OCI对Oracle数据库进行操作。

在里面有一个auto_commit_on函数是来设置auto_commit标志的,当auto_commit=1是设置每一个执行的SQL语句都会自动提交,就是做一步就有一步的改变,如果是等于0,那么就是要整个sql语句成功才算成功

连接案例:

#include 
#include
#define OTL_ORA11G_R2#if defined(__BORLANDC__)#define OTL_BIGINT __int64 // Enabling G++ 64-bit integers#define OTL_UBIGINT unsigned __int64 // Enabling G++ 64-bit integers#elif !defined(_MSC_VER)#define OTL_BIGINT long long // Enabling G++ 64-bit integers#define OTL_UBIGINT unsigned long long // Enabling G++ 64-bit integers#else#define OTL_BIGINT __int64 // Enabling VC++ 64-bit integers#define OTL_UBIGINT unsigned __int64 // Enabling VC++ 64-bit integers#endif#include "otlv4.h"using namespace std;otl_connect gbase_db;int main(void){ try{ otl_connect::otl_initialize(); gbase_db.rlogon("informix/informix@//192.168.56.102:8311/gci_demodb"); cout << "connect succeed" << endl; } catch(otl_exception& p) { cerr << p.msg << endl; cerr << p.stm_text << endl; cerr << p.var_info << endl; } gbase_db.logoff(); return 0;}

使用OTL编译案例

g++ testOTL.cpp -I/home/informix/soft/GBaseGCI_1.6.4G6_5P201801023.RHEL6_x86_64/include/ -lclntsh -L/home/informix/soft/GBaseGCI_1.6.4G6_5P201801023.RHEL6_x86_64/lib
用OTL连接数据库,其中因为GCI与OCI接口有一点不同,而OTL里面使用了OCI接口所以需要修改一点OTL库代码,问题是int*不能转换到boolean*,
解决方法是int*强转(boolean*)

使用动态连接库时 需要设置环境变量LD_LIBRARY_PATH指定动态库所在路径,或者在ld.so.conf文件中加入动态库路径 echo "/usr/local/lib" >> /etc/ld.so.conf

OTL连接数据库gbase_db.rlogon("informix/informix@/");后面再加什么都不抛出异常,如果gbase_db.rlogon("informix/informix@")就抛出异常

 

C++交流群:585225803

转载地址:https://blog.csdn.net/qq_39742146/article/details/87775863 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:OTL执行SQL语句的两种方式
下一篇:sql语句增删改查

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月14日 22时48分10秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

mysql slave 1062_mysql主从同步slave错误1062 2019-04-21
mysql构造器_MySQL行构造器表达式优化(Row Constructor Expression) 2019-04-21
2008日志清理 server sql_SQL Server 2008 清除日志 2019-04-21
mac mysql root 权限_Mac平台重新设置MySQL的root密码 2019-04-21
mysql新增一列_MySQL-ProxySQL中间件 2019-04-21
mysql 30入门_30分钟带你快速入门MySQL教程 2019-04-21
kangle主机怎么配置MySQL_kangle web服务+easypanel主机控制面板快速搭建网站和数据库以及管理空间详细教程... 2019-04-21
mysql 翻页 存储过程_MySQl通用翻页(存储过程) 2019-04-21
2020word替换所有文本_Excel字符函数(5):REPLACE、SUBSTITUTE查找替换函数之区别... 2019-04-21
win10安装ipython_win10环境 ipython app.py 8080 这里为什么是ipython 这步无法启动 2019-04-21
假定在MYSQL_假定在名称为教学库的数据库中包含有学生、课程和选课三个表,它们的定义如下 - 问答库... 2019-04-21
mysql多字段存储过程_mysql 的存储过程_多字段 2019-04-21
python怎么创建字符串列表_如何在python列表中为每个字符串创建子列表? 2019-04-21
vba ado 执行多条mysql 语句_access 按钮 多条sql语句 VBA 2019-04-21
弹性方法计算连续梁板内力_(梁板结构)混凝土结构设计复习题及答案 2019-04-21
java root权限_android java获得root权限调用linux命令 | 学步园 2019-04-21
java最小化窗体_JAVA窗体最大化最小化控制+托盘 2019-04-21
java 注解 数组默认值_Java注解默认值 2019-04-21
java流程语句_Java流程控制语句 2019-04-21
java require_java正则中的requireEnd和hitEnd 2019-04-21