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

本文共 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语句增删改查

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2023年05月26日 15时03分21秒

关于作者

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

最新文章

写缓存 php,小程序写入缓存和读取缓存如何实现 2019-08-24 11:20:17
matlab中脚本互相调用,如何在Windows上的脚本中调用Matlab? 2019-08-24 11:20:17
matlab代码看不懂,求助帖!有一个代码看不懂,请能看懂的哥哥姐姐帮帮忙 2019-08-24 11:20:16
matlab特征值提取,求大神指导,图片的特征值提取 2019-08-24 11:20:16
正交解调 matlab,MATLAB正交振幅调制解调仿真分析(一)_通信工程毕业论文范文 2019-08-24 11:20:15
php实现代码高亮,PHP高亮显示 XML 源代码_php 2019-08-24 11:20:15
java里的globalperson作用,Java PersonAddress.getAddressType方法代码示例 2019-08-24 11:20:14
dash mpd parser java,xml – 如何创建MPEG-DASH的MPD文件来播放webm视频? 2019-08-24 11:20:14
msmtp 配置php,CentOS下使用MSMTP代替Sendmail发送邮件 2019-08-24 11:20:13
php函数的示例,php函数应用实例 2019-08-24 11:20:12
const php 数组,php数组的一些常见操作汇总 2019-08-24 11:20:12
php rename 覆盖,PHP: rename - Manual 2019-08-24 11:20:11
java制作九行九列表格_用编程实现Excel表格的九个基本操作 2019-08-24 11:20:11
java实现手机端开发实例_java为移动端写接口开发实例 2019-08-24 11:20:10
mysql简介分析_(一)MySQL的架构介绍 2019-08-24 11:20:10
java带参方法怎么修改姓名_SpringMVC自动将请求参数和入参对象的属性进行一一绑定;要求请求参数的名字和javaBean入参的对象里面的属性名是一样的||员工的增删改查案例... 2019-08-24 11:20:09
java棋盘覆盖分治法_算法java实现--分治法--棋盘覆盖问题 2019-08-24 11:20:09
java entitymanager类_EntityManager方法简介 2019-08-24 11:20:08
Java中输入刘流输出流_Java IO学习笔记(JDK1.5) 2019-08-24 11:20:08
java二分查找范围区间_使用二分查找判断某个数在某个区间中--如何判断某个IP地址所属的地区... 2019-08-24 11:20:07