otl连接mysql_otl通过myodbc连接mysql
Otl简介
OTL 是 Oracle,Odbc andDB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例如Oracle,MS SQL Server,Sybase,Informix,MySQL,DB2,Interbase /Firebird,PostgreSQL,SQLite,SAP/DB,TimesTen,MS ACCESS等等。OTL中直接操作Oracle主要是通过Oracle提供的OCI接口进行,进行操作DB2数据库则是通过CLI接口来进行,至于MS的数据库和其它一些数据库,则OTL只提供了ODBC来操作的方式。当然Oracle和DB2也可以由OTL间接使用ODBC的方式来进行操纵。
Myodbc
因为otl只能通过odbc连接mysql,所以首先需要安装myodbc,myodbc官网下载地址:http://www.mysql.com/downloads/connector/odbc/,根据自己的电脑下载,我下载的是
Connector/ODBC5.1.10,Windows (x86, 32-bit), MSI Installer Connector-ODBC,然后安装即可,点击默认安装就行了。
添加数据源
打开控制面板-》点击管理工具-》点击数据源,然后添加数据源
打开ODBC数据源管理器对话框,如下图所示:
1. 打开ODBC数据源管理器。(注:在64位系统中装32的mysql和odbc,启动C:\Windows\SysWOW64\odbcad32.exe)
2.在ODBC数据源管理器对话框中,点击“添加”。打开“创建新数据源”对话框。
3.选择MySQL ODBC 5.1驱动程序,然后点击“完成”。打开“MySQLODBC 5.1驱动程序-DSN配置”对话框,如下图所示:
4.在“数据源名”框中,输入打算访问的数据源的名称。它可以是你选择的任何有效名称。
5.在“描述”框中,输入DSn所需的描述信息。
6.在“主机”或“服务器名”(或IP)框中,输入准备访问的MySQL服务器主机的名称。默认情况下为localhost(本地主机)。
7.在“数据库名”框中,输入准备用作默认数据库的MySQL数据库名称。
8.在“用户”框中,输入你的MySQL用户名(数据库用户ID)。
9.在“密码”框中输入密码。
10.在“端口”框中,如果端口不是默认端口,输入端口号。
11.选择一个数据库吧
点击ok,添加数据源完毕。
12.修改字符集名称,否则会出现乱码
下载otl
下载头文件即可。
测试一下
当然首先要把otl头文件拷贝到工程目录,链接的时候要用,下面是一个简单的测试代码,如果刚才选择了一个数据库的话,就在当前的数据库中添加了一个表;
#include
using namespace std;
#include
#define OTL_ODBC // CompileOTL 4.0/ODBC
// Thefollowing #define is required with MyODBC 5.1 and higher
#define OTL_ODBC_SELECT_STM_EXECUTE_BEFORE_DESCRIBE
#define OTL_UNICODE // CompileOTL with Unicode
#include "otlv4.h"// include the OTL 4.0 header file
otl_connect db; // connect object
void insert()
// insert rowsinto table
{
otl_stream o(1, //buffer size should be == 1 always on INSERT.
"insertinto test_tab values(:f1,:f2)",
// SQLstatement, char[5] means 5 2-byte
// Unicodecharatcters including a null
// terminator
db // connectobject
);
unsigned short tmp[32]; // Nullterminated Unicode character array.
for(int i=1;i<=100;++i){
o<
tmp[0]=1111; //Unicode character (decimal code of 1111)
tmp[1]=2222; //Unicode character (decimal code of 2222)
tmp[2]=3333; //Unicode chracater (decimal code of 3333)
tmp[3]=4444; //Unicode chracater (decimal code of 4444)
tmp[4]=0; //Unicode null terminator
o<
// overloadedoperator<
// OTL acceptsa pointer to a Unicode character array.
//operator<
// in order toavoid ambiguity in C++ type casting.
}
}
void select()
{
otl_stream i(50, //buffer size
"select* from test_tab "
"wheref1>=:f11 "
" and f1<=:f12*2",
// SELECTstatement
db // connectobject
);
// create selectstream
int f1;
unsigned short f2[32];
i<<8<<8; // assigning :f11 = 8, f12 = 8
// SELECTautomatically executes when all input variables are
// assigned. Firstportion of output rows is fetched to the buffer
while(!i.eof()){// while not end-of-data
i>>f1;
i>>(unsignedchar*)f2;
// overloaded operator>>(unsignedchar*) in the case of Unicode
// OTL acceptsa pointer to a Unicode chracter array.
//operator>>(unsigned short*) wasn't overloaded
// in order toavoid ambiguity in C++ type casting.
cout<
for(int j=0;f2[j]!=0;++j)
cout<
cout<
}
i<<4<<4; // assigning :f11 = 4, :f12 = 4
// SELECTautomatically executes when all input variables are
// assigned. Firstportion of output rows is fetched to the buffer
while(!i.eof()){// while not end-of-data
i>>f1>>(unsigned char*)f2;
cout<
for(int j=0;f2[j]!=0;++j)
cout<
cout<
}
}
int main()
{
otl_connect::otl_initialize(); // initialize the database API environment
try{
db.rlogon("root/root@myodbc5");// connect to the database
otl_cursor::direct_exec
(
db,
"droptable test_tab",
otl_exception::disabled // disable OTL exceptions
); // droptable
otl_cursor::direct_exec
(
db,
"createtable test_tab(f1 int, f2 varchar(11))"
); // create table
insert(); //insert records into table
select(); //select records from table
}
catch(otl_exception&p){ // intercept OTL exceptions
cerr<
cerr<
cerr<
}
db.logoff(); //disconnect from the database
getchar();
return 0;
}
要注意的是更改db.rlogon("root/root@myodbc5");// connect to the database
其中的数据库的用户名和密码,还有数据源的名称。
运行的结果
f1=8, f2= 1111 2222 3333 4444 f1=9, f2= 1111 2222 3333 4444 f1=10, f2= 1111 2222 3333 4444 f1=11, f2= 1111 2222 3333 4444 f1=12, f2= 1111 2222 3333 4444 f1=13, f2= 1111 2222 3333 4444 f1=14, f2= 1111 2222 3333 4444 f1=15, f2= 1111 2222 3333 4444 f1=16, f2= 1111 2222 3333 4444 f1=4, f2= 1111 2222 3333 4444 f1=5, f2= 1111 2222 3333 4444 f1=6, f2= 1111 2222 3333 4444 f1=7, f2= 1111 2222 3333 4444 f1=8, f2= 1111 2222 3333 4444
otl连接mysql_otl通过myodbc连接mysql相关推荐
- MySQL 学习笔记(15)— 连接查询(内连接、左外连接、右外连接、全外连接、交叉连接、自然连接等)
本文参考:https://gitbook.cn/gitchat/column/undefined/topic/5db92b68a9c3a53bc3800eff SQL 支持的连接查询包括内连接.外连接 ...
- 网页如何与mysql服务器建立连接不上,html与mysql建立连接数据库
html与mysql建立连接数据库 内容精选 换一换 云数据库 GaussDB(for MySQL)是华为云提供的一款安全.可信的数据库服务.GaussDB(for MySQL)秉承华为云对租户的安全 ...
- php mysql 连接不上_PHP: 连接状态 - Manual
连接状态 插件改变了 PHP MySQL 连接的控制,新建连接会从一个连接池中获取,用于替代 client-server 的单一连接方式.连接池包含一组 master 连接,和可选数目的 slave ...
- PHP与MySQL连接菜鸟教程_PHP 连接 MySQL - PHP 教程 - 菜鸟学堂-脚本之家
PHP 连接 MySQL PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension ("i" 意为 improved) PDO (PHP Dat ...
- mysql内连接和外连接的区别_Swoole4创建Mysql连接池
一 .什么是mysql连接池 场景:每秒同时有1000个并发,但是这个mysql同时只能处理400个连接,mysql会宕机. 解决方案:连接池,这个连接池建立了200个和mysql的连接,这1000个 ...
- Tableau如何连接其他电脑上的mysql数据库
在别的电脑上用Tableau,如何连接到自己电脑的mysql 数据库, 服务器名.用户名和密码该如何填 首先,需要在mysql中创建一个允许远程连接的账户,例如 mysql> grant all ...
- mysql 多表既有内连接又有外连接_MySQL 多表查询中的内连接和外连接
一般情况下一个网站的数据库通常会有多张数据表组成,这些数据表分别存储网站不同区域的内容.数据表之间可以用类似 ID 的字段来关联,在查询的时候可以通过一条语句来查询多张表的内容.例如 论坛的数据库,帖 ...
- mysql连接池失效_连接池隔天失效之异常处理
一. 开发环境 测试平台:Linux 开发工具:Eclipse 3.x 搭配环境:Struts2.x / Ibatis 2.0 / MySql / Tomcat6. ...
- MySQL连接问题【如何解决MySQL连接超时关闭】
--MySQL连接问题[如何解决MySQL连接超时关闭] ------------------------------------------------转载 最近做网站有一个站要用到WEB网页采集器 ...
- druid连接池mysql5.7_Spring Boot 使用Druid连接池整合Mybatis-Plus连接Mysql数据库
一.连接池 在普通的数据库访问程序中,客户程序得到的连接对象是物理连接,调用连接对象的close()方法将关闭连接,而采用连接池技术,客户程序得到的连接对象是连接池中物理连接的一个句柄,调用连接对象的 ...
最新文章
- 实时动态测量技术的不足与改进方法
- 使用SVN提示“工作副本已经锁定”的解决办法
- MFC非模态对话框实例
- js 中对于 css 的变量操作(React也可)
- 使用junit+mockito进行mock测试实例
- uboot的目录分析
- vscode 导入python库_vscode 如何导入python库
- 不连续曲线 highcharts_什么是正则曲线和正则曲面
- C/C++代码调试:快速定位内存的申请和释放的位置
- Atitit..组件化事件化的编程模型--(2)---------Web datagridview 服务器端控件的实现原理and总结
- 有生成的日志的监控电脑性能的软件吗_全链路监控:方案概述与对比,看完你就懂...
- python管理工具ports_采用python flask 开发如何管理 host port
- 汇编语言典型例子详解_汇编语言常见例子
- 利用MATLAB进行符号运算。
- LTM(Lifelong Topic Modeling)介绍
- 基因数据处理12之samtool的tview来查看sam的匹配文件
- Android触摸屏突然没反应了
- 基于Tushare的上证综指行情分析与影响其涨跌的因素(以美债为例)
- 安徽大学计算机科学与技术学院施俊,上海大学教授施俊应邀来我院做学术报告...
- google翻译的用法 使用translate.google.com翻译整个网页内容
热门文章
- 如何制定切实可行的计划并好好执行——2020年,我不想再碌碌无为
- flink集成springboot案例_集成-Apache Flink+Spring Boot
- html svg 线条动画,线条之美,玩转 SVG 线条动画
- creo绘图属性模板_creo绘图属性
- 2020年个人所得税计算方法(附带计算器)
- 通州区机器人比赛活动总结_机器人大赛赛后总结
- 谷歌浏览器如何设置internet选项
- ”此网站尚未经过身份验证“问题的解决办法
- windows 大容量存储设备驱动异常(代码:39)U盘由于驱动问题无法用的解决方法
- mysql设置不区分大小写_更改MYSQL数据库不区分大小写表名