使用OTL连接数据库

在使用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 <iostream>
#include <stdio.h>

#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值