视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
C++类库:OTL连接MySQLODBC数据库(insert,update,select)_MySQL
2020-11-09 20:06:41 责编:小采
文档


一. 简介

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<<"Name changed"<
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="<
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<
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

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

下载本文
显示全文
专题