站内搜索

C++类库:OTL连接MySQLODBC数据库(insert,update,select)_MySQL

一. 简介

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 <otlv4.h> // 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<int>,:f2<char[31]>)", 	                 // SQL statement	              db // connect object	             );	 char tmp[32];	 for(int i=1;i<=100;++i)	 {	  sprintf(tmp,"Name%d",i);	  o<<i<<tmp;	 }}


9). Update 语句:

// update row data into tablevoid update(const int af1){ 	 otl_stream o(1, // buffer size should be == 1 always on UPDATE				  "UPDATE test_tab "				  "   SET f2=:f2<char[31]> "				  " WHERE f1=:f1<int>", 					 // UPDATE statement				  db // connect object				 );	 o<<"Name changed"<<af1;	 o<<otl_null()<<af1+1; // set f2 to NULL}

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<<"f1="<<f1<<", f2=";		  i>>f2;		  if(i.is_null())		   cout<<"NULL";		  else		   cout<<f2;		  cout<<endl;	 }}

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<<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;}

13). 运行结果:

Outputf1=8, f2=Name8f1=9, f2=Name9f1=10, f2=Name changedf1=11, f2=NULLf1=12, f2=Name12f1=13, f2=Name13f1=14, f2=Name14f1=15, f2=Name15f1=16, f2=Name16

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 上一篇:详解MySQL集群搭建_MySQL
  • 下一篇:mysql导入导出命令解析_MySQL