linux otl mysql_Linux下使用OTL操作mysql数据库

一、编写代码

注:以下代码来自OTL示例,略有改动

#includeusing namespacestd;

#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

voidinsert()//insert rows into table

{

otl_stream o(1, //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(1, //buffer size should be == 1 always on INSERT

"insert into test_tab values"

"(:f1,:f2)", db //connect object

);char tmp[32];inti;for (i = 1; i <= 100; ++i) {

sprintf(tmp,"Name%d", i);

o<< i <

}for (i = 101; i <= 103; ++i) {

sprintf(tmp,"Name%d", i);

o2<< i <

}

}void update(const intaf1)//insert rows into table

{

otl_stream o(1, //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" <

o<< otl_null() << af1 + 1; //set f2 to NULL

}void select(const intaf1) {

otl_stream i(50, //buffer size may be > 1

"select * from test_tab"

"where f1>=:f11"

"and f1<=:f12*2",//SELECT statement

db //connect object

);//create select stream

intf1;char f2[31];

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";elsecout<

cout<

}

}intmain() {

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(10); //update records in the table

select(8); //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 0;

}

二、编译代码

g++ -o"otl_test2" otl_test2.cpp -lmyodbc3

三、运行程序 otl_test

$ ./otl_test2

结果如下:

f1=8, f2=Name8

f1=9, f2=Name9

f1=10, f2=Name changed

f1=11, f2=NULL

f1=12, f2=Name12

f1=13, f2=Name13

f1=14, f2=Name14

f1=15, f2=Name15

f1=16, f2=Name16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值