Linux下使用OTL操作mysql数据库
首先重点推荐介绍otl介绍及用法的文章:http://www.cnblogs.com/fnlingnzb-learner/p/5835560.html
一、编写代码
注:以下代码来自OTL示例,略有改动
#include
using namespace std; #include
#include
#include #define OTL_ODBC // Compile OTL 4.0/ODBC
// The following #define is required with MyODBC 3.51.11 and higher
#define OTL_ODBC_SELECT_STM_EXECUTE_BEFORE_DESCRIBE
#define OTL_ODBC_UNIX // uncomment this line if UnixODBC is used
#include // include the OTL 4.0 header file
otl_connect db; // connect object void insert()
// insert rows into table
{
otl_stream o(, // buffer size should be == 1 always on INSERT
"insert into test_tab values "
" (:f1,:f2), "
" (:f12,:f22), "
" (:f13,:f23), "
" (:f14,:f24), "
" (:f15,:f25) ",
// INSERT statement. Multiple sets of values can be used
// to work around the lack of the bulk interface
db // connect object
); // If the number of rows to be inserted is not known in advance,
// another stream with the same INSERT can be opened
otl_stream o2(, // buffer size should be == 1 always on INSERT
"insert into test_tab values "
" (:f1,:f2)", db // connect object
); char tmp[];
int i;
for (i = ; i <= ; ++i) {
sprintf(tmp, "Name%d", i);
o << i << tmp;
}
for (i = ; i <= ; ++i) {
sprintf(tmp, "Name%d", i);
o2 << i << tmp;
}
} void update(const int af1)
// insert rows into table
{
otl_stream o(, // buffer size should be == 1 always on UPDATE
"UPDATE test_tab "
" SET f2=:f2 "
" WHERE f1=:f1",
// UPDATE statement
db // connect object
);
o << "Name changed" << af1;
o << otl_null() << af1 + ; // set f2 to NULL } void select(const int af1) {
otl_stream i(, // buffer size may be > 1
"select * from test_tab "
"where f1>=:f11 "
" and f1<=:f12*2",
// SELECT statement
db // connect object
);
// create select stream int f1;
char f2[]; i << af1 << af1; // :f11 = af1, :f12 = af1
while (!i.eof()) { // while not end-of-data
i >> f1;
cout << "f1=" << f1 << ", f2=";
i >> f2;
if (i.is_null())
cout << "NULL";
else
cout << f2;
cout << endl;
} } int main() {
otl_connect::otl_initialize(); // initialize ODBC environment
try { // db.rlogon("UID=xuanyuan;PWD=xuanyuan;DSN=examples"); // connect to ODBC
//其中dsn是odbc连接的名字,不是数据库的名字,otl是通过odbc的名字找到数据库的,
//而这个名字对于的配置里面,已经包含了IP,端口等信息,只要你提供用户名和密码就可以访问了
//见http://jingyan.baidu.com/article/8065f87f38b31423312498e4.html
db.rlogon("xuanyuan/xuanyuan@examples"); // connect to ODBC, alternative format of connect string otl_cursor::direct_exec(db, "use examples"); // 此行在原示例代码中没有,必须使用use xxx切换数据库
otl_cursor::direct_exec(db, "drop table test_tab",
otl_exception::disabled // disable OTL exceptions
); // drop table otl_cursor::direct_exec(db,
"create table test_tab(f1 int, f2 varchar(30)) type=innoDB"); // create table insert(); // insert records into the table
update(); // update records in the table
select(); // select records from the table } catch (otl_exception& p) { // intercept OTL exceptions
cerr << p.msg << endl; // print out error message
cerr << p.stm_text << endl; // print out SQL that caused the error
cerr << p.sqlstate << endl; // print out SQLSTATE message
cerr << p.var_info << endl; // print out the variable that caused the error
} db.logoff(); // disconnect from ODBC return ; }
二、编译代码
g++ -o"otl_test2" otl_test2.cpp -lmyodbc3
三、运行程序 otl_test
$ ./otl_test2
结果如下:
f1=, f2=Name8
f1=, f2=Name9
f1=, f2=Name changed
f1=, f2=NULL
f1=, f2=Name12
f1=, f2=Name13
f1=, f2=Name14
f1=, f2=Name15
f1=, f2=Name16
Linux下使用OTL操作mysql数据库的更多相关文章
- Linux下用OTL操作MySql(包含自己封装的类库及演示样例代码下载)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ClamReason/article/details/23971805 首先重点推荐介绍otl介绍及使 ...
- Linux下使用Python操作MySQL数据库
安装mysql-python 1.下载mysql-python 打开终端: cd /usr/local sudo wget http://nchc.dl.sourceforge.net/sourcef ...
- Linux下C语言操作MySQL数据库
MySQL是Linux系统下广泛使用的开源免费数据库,是Linux应用程序数据存储的首选. Ubuntu下安装 […]
- 在linux下安装并配置mysql数据库
在linux下安装并配置mysql数据库 工具/原料 MySql5.6 CentOS 方法/步骤 1 查找以前是否安装有mysql,使用下面命令: rpm -qa|grep -i mysql ...
- linux下应用crontab对mysql数据库进行定时备份
linux下应用crontab对mysql数据库进行定时备份 @(编程) mysql数据库提供了备份命令mysqldump,可以结合crontab命令进行定时备份. 我写了一个mysqlbackup. ...
- linux下的shell操作mysql
(1)MySQL的启动 重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect to local ...
- Linux下安装以及使用MySQL数据库
1.官网下载mysql数据库:https://dev.mysql.com/downloads/mysql/ 2.linux 下可直接下载:wget https://cdn.mysql.com//Dow ...
- linux下卸载和安装mysql数据库的方法
1.1 MySQL下载 下载地址:http://www.mysql.com/downloads/mysql/5.5.html#downloads 版本:5.1.68 平台:linux general ...
- Linux下的C#连接Mysql数据库
今天在尝试在 Linux 系统下使用C#连接数据库,发现网上这方面的信息很少,所以就写一篇博客记录一下. Linux下这里使用的是mono. 首先是缺少Mysql.Data.dll这个库的,所以需要安 ...
随机推荐
- fork和exec
fork pid_t fork(void); 它在调用进程(成为父进程)中返回一次,返回值为新派生进程(成为子进程)的进程ID号 在子进程中又返回一次,返回值为0.因此,返回值本身告知当前进程是子进程 ...
- java程序源码
//Account.java package pers.liqin.accounlist; public class Account { private String accountID; priva ...
- tomcat中配置https
HTTPS配置中分为单向连接和双向连接,单向连接只需要服务器安装证书,客户端不需要,双向连接需要服务器和客户端都安装证书: 一.Keytool命令: 1.生成密钥对: keytool -genkey ...
- MySQL 5.7新特性之在线收缩undo表空间
1. MySQL 5.5时代的undo log 在MySQL5.5以及之前,大家会发现随着数据库上线时间越来越长,ibdata1文件(即InnoDB的共享表空间,或者系统表空间)会越来越大,这会造成2 ...
- hanlp中文智能分词自动识别文字提取实例
需求:客户给销售员自己的个人信息,销售帮助客户下单,此过程需要销售人员手动复制粘贴收获地址,电话,姓名等等,一个智能的分词系统可以让销售人员一键识别以上各种信息 经过调研,找到了一下开源项目 1.wo ...
- JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址
/** * JavaMail SMTP服务器发送邮件程序示例 * 扮演SMTP服务器角色与邮件客户端软件最大的区别就是: * SMTP服务器需要解析不同接收人邮件地址主机名对应的SMTP服务器主机名 ...
- Maya中输出nuke脚本的方法
因项目需要,三维部门跟踪组动画组都需要一个能够快速输出nuke预合成工程的脚本.脚本已经写完,源码不便于放出来,写一个大致思路吧. 我首先分析了nuke工程,内部包含了哪些节点,这些节点有哪些属性需要 ...
- PI接口无法使用.net4以上的解决方法:无法嵌入互操作类型“PISDKClass”。请改用适用的接口。
Interop type 'PISDKClass' cannot be embedded. Use the applicable interface instead. .net开发中,有时候在引用某些 ...
- 胖子哥的大数据之路(7)- 传统企业切入核心or外围
一.引言 昨天和一个做互联网大数据(零售行业)的朋友交流,关于大数据传统企业实施的切入点产生了争执,主要围绕两个问题进行了深入的探讨: 问题1:对于一个传统企业而言什么是核心业务,什么是外围业务? 问 ...
- git log乱码显示
1.Linux下UTF8编码 [xusi@pre-srv24 crm2]$ localeLANG=en_US.UTF-8 设置如下: git config --global i18n.commiten ...