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) 指定连接的数据库类型:

<span style="font-size:14px;">#define OTL_ODBC_MYSQL // 指定连接的数据库类型</span>

2) 导入OTL 4 头文件

<span style="font-size:14px;">#include <otlv4.h> // include the OTL 4 header file</span>

3) 定义数据库实例:

<span style="font-size:14px;">otl_connect db; // 定义数据库实例</span>

4) 初始化ODBC环境:

<span style="font-size:14px;">otl_connect::otl_initialize();</span>

5) 连接ODBC:

<span style="font-size:14px;">db.rlogon("UID=scott;PWD=tiger;DSN=mysql"); // connect to ODBC</span>

6). 删除表格:

<span style="font-size:14px;">  otl_cursor::direct_exec
   (
    db,
    "drop table test_tab",
    otl_exception::disabled // disable OTL exceptions
   ); // drop table</span>

7). 创建表格:

<span style="font-size:14px;">  otl_cursor::direct_exec
   (
    db,
    "create table test_tab(f1 int, f2 varchar(30))"
    );  // create table</span>

8). Insert 语句:

<span style="font-size:14px;"> // 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;
	 }
}</span>

9). Update 语句:

<span style="font-size:14px;">// 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
}</span>

10). Select语句:

<span style="font-size:14px;">// 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;
	 }

}</span>

11). 断开ODBC:

<span style="font-size:14px;"> db.logoff(); // disconnect from ODBC</span>

12). 案例:

<span style="font-size:14px;">int main()
{
	 otl_connect::otl_initialize(); // initialize ODBC environment
	 try
	 {

		  db.rlogon("UID=scott;PWD=tiger;DSN=mysql"); // connect to ODBC
		  //  db.rlogon("scott/[email protected]"); // 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;

}</span>

13). 运行结果:

<span style="font-size:14px;">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</span>

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

时间: 2024-10-05 01:31:48

C++类库:OTL连接MySQL ODBC数据库(insert, update, select)的相关文章

debian C++ OTL库 用 unixodbc 连接 mysql 小记

这个东东也是折腾了几天,网上很多文章可能已经过时,所以写下不同,以备后用. 参考网址: http://blog.csdn.net/genganpeng/article/details/7402229 http://blog.csdn.net/liefdiy/article/details/5348583 http://blog.itpub.net/81/viewspace-710064/ http://www.software8.co/wzjs/czxt/4668.html 为什么要用 OTL去

php 连接mysql

@屏蔽错误信息,error_reporting(0),也是屏蔽错误信息 连接数据库时,如有有错就报错误信息 $m[email protected]new mysqli('localhost','rootr','','db'); $m->set_charset('utf8'); if($m->connect_error){ echo $m->connect_error; exit; } $m->close();//关闭数据库连接 不提示警告错误error_reporting(0);

一个简单的JSP 连接MySQL使用实例

一.软件环境 下载并安装MySQL,Tomacat,JDBC.MyEclipse或其他IDE. 二.环境配置 将其环境变量配置好之后,下载Java 专用的连接MySQL的驱动包JDBC,有人会发现在一些下载的JDBC压缩包里面发现若干文件, 比如:mysql-connector-java-gpl-5.1.34.msi的安装文件,那这个文件是干什么用的呢,它又与mysql-connector-java-5.1.34-bin.jar有什么区别?其实两个都是一样的,只不过mysql-connector

python3.6+RF连接mysql

接口自动化中会遇到有操作数据库的动作 目录 1.安装第三方库 2.安装pymysql 3.数据库操作 1.安装第三方库 使用在线安装:pip install robotframework_databaselibrary -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn 2.安装pymysql 使用在线安装方式安装:pip install pymysql -i https://p

测试ODBC连接MySQL数据库

下面这个例子是最简单的ODBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8.5+ MySQL5.1 2.代码运行前需要加载Mysql驱动包: 数据库信息截图: 源码如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql

VBA连接MySQL数据库以及ODBC的配置(ODBC版本和MySQL版本如果不匹配会出现驱动和应用程序的错误)

db_connected = False '获取数据库连接设置dsn_name = Trim(Worksheets("加载策略").Cells(2, 5).Value)  ------(ODBC配置中的DATA SOURCE NAME)user_name = Trim(Worksheets("加载策略").Cells(3, 5).Value)pass_word = Trim(Worksheets("加载策略").Cells(4, 5).Value

SSIS ODBC方式连接mysql数据库的一个问题

开发工具 vs2010 ssdt 最近项目中需要将ms sqlserver 数据库和mysql数据库进行数据交互集成,在SSIS包开发过程中,Mysql odbc connector 插件的安装费 了不少时间.我下载了5.3.4版本的mysqlconnector . OS系统是win8,1 64 位,所以对应安装了64位的插件. 在控制面板找到管理工具然后设置ODBC源时也一切正常 test connection successful. 设置完成在SSIS包新建mysql数据库连接时,却发现插件

JDBC连接MySQL数据库及演示样例

JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供统一訪问,它由一组用Java语言编写的类和接口组成.JDBC为数据库开发者提供了一个标准的API,据此能够构建更高级的工具和接口,使数据库开发者能够用纯 Java API 编写数据库应用程序,而且可跨平台执行,而且不受数据库供应商的限制.

两种方法连接MySql数据库

1.用MySQLDriverCS连接MySQL数据库 先下载和安装MySQLDriverCS,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Odbc; using System.Drawing; using S