
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关于作者
