c++ mysql otl变量绑定_C++类库:OTL连接MySQL ODBC数据库(insert, update, select)

一. 简介

OTL是一个纯C++的通用数据库连接模板库,可以支持各种当下流行的数据库,如Oracle,Sybase, MySQL, PostgreSQL, EnterpriseDB, SQLite,  MS ACCESS, Firebird等等.它是一个跨平台类库,在MS Windows, Linux/Unix/Mac OS X 都可以使用。

OTL使用简单, 只要头文件中包含有: #include "otlv4.h" 就可,实际上整个OTL就一个.H的文件,使用起来极为的方便。

我的下载空间:

代码:http://download.csdn.net/detail/u013354805/9057229

文档:http://download.csdn.net/detail/u013354805/9057243

案例:http://download.csdn.net/detail/u013354805/9057273

官方下载地址:http://otl.sourceforge.net/

二. 使用方法:

1. 首先指定要连接的数据库类型,OTL用宏定义来指定要连接的数据库类型。OTL会根据这个宏定义来初始化数据库连接的环境。

相关的宏定义列表:  http://otl.sourceforge.net/otl3_compile.htm

如: #define OTL_ODBC_MYSQL表示连接ODBC MySQL数据库。

2、案例:

1) 指定连接的数据库类型:

#define OTL_ODBC_MYSQL // 指定连接的数据库类型

2) 导入OTL 4 头文件

#include // include the OTL 4 header file

3) 定义数据库实例:

otl_connect db; // 定义数据库实例

4) 初始化ODBC环境:

otl_connect::otl_initialize();

5) 连接ODBC:

db.rlogon("UID=scott;PWD=tiger;DSN=mysql"); // connect to ODBC

6). 删除表格:

otl_cursor::direct_exec

(

db,

"drop table test_tab",

otl_exception::disabled // disable OTL exceptions

); // drop table

7). 创建表格:

otl_cursor::direct_exec

(

db,

"create table test_tab(f1 int, f2 varchar(30))"

); // create table

8). Insert 语句:

// insert rows into table

void insert()

{

otl_stream o(1, // buffer size should be == 1 always on INSERT

"insert into test_tab values(:f1,:f2)",

// SQL statement

db // connect object

);

char tmp[32];

for(int i=1;i<=100;++i)

{

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

o<

}

}

9). Update 语句:

// update row data into table

void update(const int af1)

{

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<

o<

}

10). Select语句:

// MyODBC does not allow any input bind variables in the WHERE clause

// in a SELECT statement.

// Therefore, the SELECT statement has to be generated literally.

void select(const int af1)

{

char stmbuf[1024];

sprintf(stmbuf,

"select * from test_tab where f1>=%d and f1<=%d*2",

af1,

af1

);

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

stmbuf, // SELECT statement

db // connect object

);

// create select stream

int f1;

char f2[31];

while(!i.eof())

{ // while not end-of-data

i>>f1;

cout<

i>>f2;

if(i.is_null())

cout<

else

cout<

cout<

}

}

11). 断开ODBC:

db.logoff(); // disconnect from ODBC

12). 案例:

int main()

{

otl_connect::otl_initialize(); // initialize ODBC environment

try

{

db.rlogon("UID=scott;PWD=tiger;DSN=mysql"); // connect to ODBC

// db.rlogon("scott/tiger@mysql"); // connect to ODBC, alternative format

// of connect string

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))"

); // 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<

cerr<

cerr<

cerr<

}

db.logoff(); // disconnect from ODBC

return 0;

}

13). 运行结果:

Output

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值