OTL 操作指南

最近考虑到用cpp连接mysql数据库,本身使用二进制内嵌(加入头文件mysql.h以及静态连接libmysql.lib)的方式,发现不具有跨平台的能力,后续想寻找一个合适的方式来完成跨平台的需求,找了一圈,发现OTL挺方便的,但是网络上并没有直接的《OTL一站式指南》,所以在这里把安装使用过程记录一下。

顺便一提,这里主要是指windows平台的安装。

OTL 简介OTL 是 Oracle, Odbc and DB2-CLI TemplateLibrary 的缩写,是一个操控关系数据库的C++模板库,

所以这里主要是用ODBC的方式连接mysql.开放数据库连接(Open Database Connectivity,ODBC)是为解决异构数据库间的数据共享而产生的,现已成为WOSA(The Windows Open System Architecture(Windows开放系统体系结构))的主要部分和基于Windows环境的一种数据库访问接口标准ODBC 为异构数据库访问提供统一接口,允许应用程序以SQL 为数据存取标准,存取不同DBMS管理的数据;使应用程序直接操纵DB中的数据,免除随DB的改变而改变。用ODBC 可以访问各类计算机上的DB文件,甚至访问如Excel 表和ASCI I数据文件这类非数据库对象。

OTL 安装

查了半天资料,还是有点一知半解,后续明白了ODBC就是一个中转协议。原本是cpp源码集成驱动,直接用网络底层连接mysql,采用ODBC方式时,实际上应用是和ODBC先连接,然后经由ODBC转发到MYSQL上。

明白了这个途径之后,明显感受到了连接速度变慢了,但是后续我测试的时候,一次性发送了多达30M的静态sql插入语句都没有出现问题,足以在一定程度上说明了ODBC方式的可用度。

为了使用odbc方式,可以先到mysql官网下载

这里的32位,64位跟操作系统一致就行,安装完毕之后; 打开windows的控制面板,然后在右上角输入管理工具,双击打开数据源,这里如果安装64位的话,分别由32,64位的数据源选项可供选择。我这里选跟mysql版本一致的32位,双击打开后按照需求填入账号密码以及数据库信息,最后,记得把ODBC的数据源名字记下来,后面有用到。

然后去otl官网下载传说中的head-only头文件。

OTL 使用

只有头文件就能直连odbc我是不信哒,后面的编译错误很快地验证了我的想法,在ODBC的安装文件夹下有几个后缀为A,S,W的静态文件以及动态DLL文件都要放好. 而且在引用头文件时,我发现需要设置一些宏定义来自定义OTL的接口支持。

这里我重新使用了一个头文件otl.h来包含原有的头文件otlv4.h,这样的话在业务层只需要引用otl.h就行了,各处统一使用一个OTL配置。

OTL 手册

OTL的详细参考主要有以下几个链接,我觉得帮助很大。

主要用法就是查询一些宏定义的配套,以及相关用例。

OTL 附录

otl.h 的参考内容

#pragma once

#define OTL_ODBC_MYSQL#define OTL_STL#define OTL_STREAM_WITH_STD_CHAR_ARRAY_ON#define OTL_STREAM_WITH_STD_TUPLE_ON#define OTL_STREAM_NO_PRIVATE_BOOL_OPERATORS#define OTL_STREAM_NO_PRIVATE_UNSIGNED_LONG_OPERATORS#define OTL_ANSI_CPP#define OTL_BIGINT __int64#define OTL_STR_TO_BIGINT(str,n) \{ \n=_atoi64(str); \}#define OTL_BIGINT_TO_STR(n,str) \{ \_i64toa(n,str,10); \}

#if defined(__GNUC__)// GNU C++#include #define OTL_BIGINT long long#define OTL_STR_TO_BIGINT(str,n) \{ \n=strtoll(str,0,10); \

}

#define OTL_BIGINT_TO_STR(n,str) \{ \sprintf(str,"%lld",n); \

}

#endif

#define OTL_ANSI_CPP_11_ARRAY_IS_SUPPORTED#include

otlv4 mysql_OTL 使用记录相关推荐

  1. mysql建立联合索引,mysql建立唯一键,mysql如何解决重复记录联合索引

    在项目中,常常要用到联合唯一   在一些配置表中,一些列的组合成为一条记录.   比如,在游戏中,游戏的分区和用户id会形成一条记录.(比如,一个qq用户可以在艾欧尼亚.德玛西亚创建两个账号) 添加联 ...

  2. 实现 连续15签到记录_MySQL和Redis实现用户签到,你喜欢怎么实现?

    现在的网站和app开发中,签到是一个很常见的功能 如微博签到送积分,签到排行榜 微博签到 如移动app ,签到送流量等活动, 移动app签到 用户签到是提高用户粘性的有效手段,用的好能事半功倍! 下面 ...

  3. 记录一次http请求失败的问题分析

    问题背景 当前我有一个基于Flask编写的Restful服务,由于业务的需求,我需要将该服务打包成docker 镜像进行离线部署,原始服务的端口是在6661端口进行开启,为了区分,在docker中启动 ...

  4. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  5. LeetCode简单题之学生出勤记录 I

    题目 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 'L':Late,迟到 'P':Pre ...

  6. 关于TVM的点滴记录

    关于TVM的点滴记录

  7. MySql数据库Update批量更新与批量更新多条记录的不同值实现方法

    批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other ...

  8. 记录篇,自己在项目中使用过的。

    图片选择器,6.0已经适配过,类似qq空间上传 点击打开链接_胡小牧记录 下面是效果图: PictureSelector PhotoPicker 类似qq空间发布心情. 点击打开链接 BubbleSe ...

  9. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  10. 生产环境项目问题记录系列(一):一次循环数据库拖垮服务器问题

    心血来潮,决定时不时记录下生产项目中遇到的问题. 今天的问题是这样的,昨天晚上大约7点左右,服务器报警,CPU暴涨.通过监控页面发现某个订阅MQ的服务接口有400多个超过10秒的请求(正常只有100- ...

最新文章

  1. 函数的重载 - C++快速入门06
  2. C++转Python这三年,我都经历了什么?
  3. 从日志入手,保障 Kubernetes 稳定性
  4. Python批量修改Excel文件格式:加粗、颜色交替、渐变背景色填充
  5. 狼来了!中国房地产的实质--比喻太生动了
  6. 4.深入分布式缓存:从原理到实践 --- Ehcache 与 Guava Cache
  7. 电力行业知识竞赛现场部分照片及用PPT模板制作的电力行业安全知识竞赛题目界面部分展示
  8. 在线英文翻译中文比较
  9. OC5021B降压型恒流驱动控制芯片,关断时间可调
  10. 常用导数与等价无穷小
  11. 宽带经常掉线应如何解决
  12. B - Mountainous landscape Gym - 100543B(线段树+计算几何)
  13. 一起来学 R编程吧(2)---判断语句switch函数的用法
  14. FFmpeg源码分析:AVIOContext、IO模型与协议
  15. “香港科大百万奖金创业大赛”的十年深耕:让硬科技像蒲公英一样散播
  16. 微信公众号订阅号留言点赞采集抓取爬虫
  17. Redis:redis通用命令;redis常见数据结构;redis客户端;redis的序列化
  18. 小记一次海量数据实时查询域名库设计(上)
  19. 智芯传感推出性能卓越的多量程硅微加速传感器ZXA
  20. 6种穷人思维必须警惕

热门文章

  1. 概率论与随机过程(分布函数整合)
  2. 一文读懂微软转型秘诀
  3. 电脑屏幕键盘关闭方法
  4. AIX补丁中TL、SP、CSP、IF、PTF的含义
  5. 网桥 网卡网桥有什么区别
  6. ES6--变量的解构赋值
  7. qq代理服务器传输文件失败,qq接收文件时显示传输文件失败?
  8. 如何查看计算机是否支持64位操作系统,如何查看计算机是32位还是64位操作系统?...
  9. 18.10.29 POJ 3987 Computer Virus on Planet Pandora(AC自动机+字符串处理)
  10. Unity 对接友盟与TalkingData数据平台(简易版)