程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> C++類庫:OTL連接MySQLODBC數據庫(insert,update,select)

C++類庫:OTL連接MySQLODBC數據庫(insert,update,select)

編輯:MySQL綜合教程

C++類庫:OTL連接MySQLODBC數據庫(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 <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 table
void 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). 運行結果:

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

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved