1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > linux otl mysql_Linux下使用OTL操作mysql数据库

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

时间:2023-06-17 00:35:49

相关推荐

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,端口等信息,只要你提供用户名和密码就可以访问了"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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。