C++使用OTL与mySql交互

OTL 一般概念

当OTL用于oracle数据库时可以通过oracle数据库提供的接口;当OTL用于非oracle数据库时,OTL提供了odbc接口(oracle数据库也提供),所以使用OTL来控制非oracle数据库均需先安装对应数据库的odbc驱动。

因为对于不同的数据库OTL使用不同的odbc,所以在使用OTL之前需要定义一些宏,告知OTL当前使用的数据库类型。

使用OTL操作mysql

在使用OTL前需要安装myodbc。如果使用5.1及以上版本的myodbc,需要配置mySql使其默认编码方式为utf-8。参考1参考2

在引用otlv4.h头文件之前要先定义几个宏(参考):

#define OTL_ODBC // Compile OTL 4.0/ODBC

// The following #define is required with MyODBC 5.1 and higher

#define OTL_ODBC_SELECT_STM_EXECUTE_BEFORE_DESCRIBE

#define OTL_UNICODE // Compile OTL with Unicode

编译OTL时添加链接库:win32: LIBS+=-lodbc32,为了在尽可能的减少依赖,在发布软件时,使用静态的链接选项(以Qt为例):QMAKE_LFLAGS+=-static

使用

OTL的使用流程

* 首先定义宏,指明所使用的数据库类型并设置环境。如#define OTL_ORA9I

* 定义otl_connect对象。otl_connect db; // connect object

* 使用otl_connect的静态方法otl_initialize()初始化OTL环境。otl_connect::otl_initialize();

* 使用otl_connect的rlogon()方法连接数据库。db.rlogon("user_id/password@odbc_data_source_name");,

* 定义otl_stream()对象。如下示例中所示

* 使用otl_stream的<

* 使用otl_stream的>>操作符读取返回结果

* 调用otl_connect的logoff()方法从数据库断开

示例(仅作为参考,具体例子参考官方资料)

//use #define OTL_UNICODE

try {

//insert

otl_stream insert_data(

1,// buffer size should be == 1 always on INSERT.

"insert into t_belt_realtime_data(velocity, cumulation, datetime, belt_id, logs )"

"values(:velocity,:cumulation,:datetime,:belt_id, :logs)",

// SQL statement, char[5] means 5 2-byte. Unicode charatcters including a null terminator

db_ // connect object

);

//每次填充一个数据,从左到右,当前的例子一共需要填充5次数据

insert_data<(data.first);//std::pair data; 将数据转化为与sql语句中对应占位符相同的类型

insert_data<(data.second);

insert_data<(time(nullptr));

insert_data<(0);

unsigned short tmp[32]; // Null terminated Unicode character array.

tmp[0]=1111; // Unicode character (decimal code of 1111)

tmp[4]=0; // Unicode null terminator

insert_data<

//select

char str_sql[] = "select velocity, cumulation fromt_belt_realtime_data "//注意sql语句中的空格

" WHERE datetime >= :time_tem" ;

otl_stream select_data(

1,//指定缓冲行数,OTL中应该还有一层隐藏的缓冲区,这里指定的缓冲区只是指定每次OTL填充的行数。

(const char*)str_sql,

db_ );

select_data<(0);

float v,c;

while(!select_data.eof()) { //显示所有数据,虽然说缓冲区只设定为1

//执行str_sql之后返回的数据的行数可能大于1,但OTL会将他们保存在其默认缓冲区中。

//只有select_data中所有有效行都迭代完成之后eof才会置true。

select>>v>>c;

cout<

}

} catch(otl_exception& p) {

cerr<

cerr<

cerr<

}

占位符:示例第一句语句中由冒号开头的变量为占位符参数,我们需要使用<

* float:4-byte floating point number

* int:signed 32-bit int

* short:short int (16-bit signed integer)

* unsigned:unsigned int (32-bit unsigned integer)

* char[length]:由NUL结尾的字符串,最大长度依赖于数据库(length参数是必须的,length表示的是字符个数且length中包含了NUL)。如果定义了宏OTL_UNICODE,那么字符串的编码方式为UTF-16(每个字符两字节),且依旧使用NUL结尾。(char[11]可以用于绑定varchar(9))。

* 其他

otl mysql 下载_OTL mySQL相关推荐

  1. MySQL下载与MySQL安装图解(MySQL5.7与MySQL8.0)

    MySQL下载与MySQL安装图解(MySQL5.7与MySQL8.0) 1.MySQL下载(MySQL8.0社区版) mysql下载方法,请根据风哥以下步骤与图示来下载mysql8.0最新社区版本: ...

  2. mysql 下载、运行

    一.mysql 下载 1.mysql下载地址:MySQL :: Download MySQL Community Server 2.点击图中标注的地方 3.下图中1.2.3选择自己所需要的版本,下载压 ...

  3. mysql 下载安装教程以及密码初始化

    一.mysql 下载安装 官网地址:https://dev.mysql.com/ 下载历史版本: 下载5.7.11 二.安装mysql 下载好mysql后,将软件解压自己想要的位置,不需解压,并把目录 ...

  4. MySQL下载与安装教程以及环境变量配置

    MySQL下载 1 搜索mysql 选择mysql downloads 如下 2 点击滑动到底部选择社区版本(免费) 如下 3 选择Community Server 如下 4 选择对应的版本下载 我选 ...

  5. cent os mysql下载_Cent OS 6.4安装mysql

    Cent OS6.4 RPM安装mysql 一.卸载掉原有mysql 因为目前主流Linux系统版本基本上都集成了mysql数据库在里面 如下命令来查看我们的操作系统上是否已经安装了mysql数据库 ...

  6. mysql下载地址与安装

    MySQL下载与安装 一.下载 地址:https://dev.mysql.com/downloads/mysql/ 当前最新是8.0版本,我选择上一个最新的mysql-5.7.24-winx64.zi ...

  7. 刘道成mysql视频教程_燕十八刘道成Mysql 系列视频教程 Mysql视频教程打包下载

    课程名称 燕十八刘道成Mysql 系列视频教程 Mysql视频教程打包下载 课程介绍 本教程完全从初学者的角度出发,循序渐进,逐步深入,确保每一位初学者能够理解和掌握,进而达到精通的程度,本套教程非常 ...

  8. my SQL下载安装,环境配置,以及密码忘记的解决,以及navicat for mysql下载,安装,测试连接...

    一.下载 在百度上搜索"mysql-5.6.24-winx64下载" 二.安装 选择安装路径,我的路径"C:\Soft\mysql-5.6.24-winx64" ...

  9. MySQL下载与配置

    一.MySQL下载 MySQL下载地址: https://dev.mysql.com/downloads/mysql/ 选择注册,登录,或者直接进行下载. 选择下载ZIP或者MSI格式.其中ZIP格式 ...

  10. eclipse jdbc mysql下载_在eclipse里jdbc连接mysql 怎么安装

    纯新手,百度了好久"jdbc怎么安装""eclipsemysqljdbc"找不到教程,试着下载了mysql-connector-java-5.0.3-bin.j ...

最新文章

  1. 美通信与动力公司向WIN-T军事通信计划提供支持
  2. springboot整合spring @Cache和Redis
  3. linux双wan网关负载均衡,Csico2951路由器,如何做到双WAN口负载均衡?
  4. 转为字符数组_数组的20种常用的方法?
  5. 图像处理笔记(十八):模板匹配
  6. 【王道计组笔记】储存系统(1):基本概念
  7. php纯真ip调用,使用php调用纯真IP数据库信息的解析组件
  8. 国开大学c语言程序设计形考任务1,国开电大《数控编程技术》形考任务1-4答案...
  9. c java gs_Java基础-gs(垃圾回收)
  10. 磊科路由器信号按键_怎样隐藏磊科路由器WiFi信号
  11. 泰坦尼克号数据挖掘项目实战——Task1 数据分析
  12. Livid : 在 26 岁时写给 18 岁的自己
  13. 測試電容器好壞与常用单位换算
  14. Outlook Business Contact Manager 2010入门
  15. 编写一个程序,分别使用字节流和字符流拷贝一个文本文件
  16. AUC的计算方法及相关总结
  17. 凯哥自媒体:怎样用今日头条自媒体赚钱?
  18. 30亿卖身苹果的Beats,最终还是沦为AirPods的垫脚石
  19. 原理图端口符号_原理图输入设计历史(一)
  20. 计算机维修基础知识pdf,电脑主板维修基础知识.pdf

热门文章

  1. php 设置允许跨域请求
  2. 在.net Core中使用StackExchange.Redis 2.0
  3. 一些特殊区域的全纯自同构群
  4. Python程序设计基础(第九章 字典和集合 练习记录)
  5. 地坛——我的最爱 (2006-11-12 09:33:18)
  6. 如何扩大电脑c盘分区,c盘空间不足怎么扩容
  7. 中国网络游戏行业研究报告-2010
  8. linux中的各文件的颜色含义
  9. 光纤跳线选用指南及光模块连接方案
  10. javaScript入门,新手小白也能会