MySQL Connector C++ 1.1.3和boost_1_55_0

今天想用MySQL Connector 来访问Mysql,记录全过程。

1.下载安装

下载MySQL Connector C++,下载地址:

http://dev.mysql.com/downloads/connector/cpp/

目前最新Windows版本1.1.3;本机环境是windows XP 32位系统,VS 2005开发环境。

安装完成以后,在原来安装Mysql的目录C:\Program Files\MySQL,多出来一个MySQL Connector C++ 1.1.3的文件夹

2.试用MySQL Connector C++

随便建一个控制台工程mysqlCon,尝试编译(目标就是编译通过,通过了就完成任务了)

#include "stdafx.h"
#include <iostream>  
#include <map>  
#include <string>  
#include <memory>  

#include "mysql_driver.h"  
#include "mysql_connection.h"  
#include "cppconn/driver.h"  
#include "cppconn/statement.h"  
#include "cppconn/prepared_statement.h"  
#include "cppconn/metadata.h"  
#include "cppconn/exception.h"  
using namespace std;
using namespace sql;  

#pragma comment(lib, "mysqlcppconn.lib")  


int main(int argc, char *argv[])  
{
   return 0;
}

肯定有问题

2.1  拷入需要的文件

>>将安装目录(C:\Program Files\MySQL\MySQL Connector C++ 1.1.3)下的include整个拷入工程目录E:\VSProject\mysqlCon\mysqlCon;

>>将C:\Program Files\MySQL\MySQL Connector C++ 1.1.3\lib\opt目录下的mysqlcppconn.lib,拷入工程目录E:\VSProject\mysqlCon\mysqlCon;

>>将C:\Program Files\MySQL\MySQL Connector C++ 1.1.3\lib\opt的三个dll文件:mysqlcppconn.dll、MSVCR90.dll、MSVCP90.dll,拷入程序运行目录E:\VSProject\mysqlCon\mysqlCon\Debug


2.2 设置VS工程属性

>>属性--c/c++--常规--附加包含目录:E:\VSProject\mysqlCon\mysqlCon\include   (刚刚放入工程的include)


对于MySQL Connector的引用到此结束,再次编译。该死的错误,找不到boost目录下的文件;开始下一个征程,编译安装boost;

3.下载编译boost

3.1下载地址:http://www.boost.org/users/history/version_1_55_0.html

目前最高版本boost_1_55_0,下载以后,解压到存英文,无空格的路径下,本次解压到D盘;

3.2 编译boost

打开VS 2005命令提示窗口,切换到刚刚解压后的目录:D:\boost_1_55_0\boost_1_55_0

运行:

bootstrap.bat
会生成两个文件:b2.exe和bjam.exe

再执行编译

b2 install --prefix=PREFIX
其中,PREFIX就是编译后将要输出的路径,boost当前目录下,此时可能要等上很久...

编译完成以后,在当前目录下出现了include 和 lib文件夹


4.设置boost环境

>>将D:\boost_1_55_0\boost_1_55_0\PREFIX\include\boost-1_55,加入属性--c/c++--常规--附加包含目录,与上一个用分号隔开;如:

"D:\boost_1_55_0\boost_1_55_0\PREFIX\include\boost-1_55";E:\VSProject\mysqlCon\mysqlCon\include
>>链接器--附加库目录:

D:\boost_1_55_0\boost_1_55_0\PREFIX\lib

至此,环境完全OK,编译通过。


5.测试代码

#include <string>  
#include <memory>  

#include "mysql_driver.h"  
#include "mysql_connection.h"  
#include "cppconn/driver.h"  
#include "cppconn/statement.h"  
#include "cppconn/prepared_statement.h"  
#include "cppconn/metadata.h"  
#include "cppconn/exception.h"  

#define DBHOST "tcp://127.0.0.1:3306"  
//#define DBHOST "localhost"  
#define USER "root"  
#define PASSWORD "123456"  
#define DATABASE "mydb"  

#define NUMOFFSET 100  
#define COLNAME 200  

using namespace std;
using namespace sql;  

#pragma comment(lib, "mysqlcppconn.lib")  


int main(int argc, char *argv[])  
{
	Driver *driver;  
	Connection *con;  
	Statement *stmt;  
	ResultSet *res;  
	Savepoint *savept;  

	int updatecount = 0;  

	/* initiate url, user, password and database variables */  

	sql::SQLString url(DBHOST);  
	sql::SQLString user(USER);  
	sql::SQLString password(PASSWORD);  
	sql::SQLString database(DATABASE);

	try   
	{  
		driver = get_driver_instance();
		/* create a database connection using the Driver */  
		con = driver -> connect(url, user, password); 

		/* turn off the autocommit */  
		con -> setAutoCommit(0);  

		con -> setSchema(database); 

		/* create a statement object */  
		stmt = con -> createStatement();  
		
		/* run a query which returns exactly one result set */ 
		stmt->execute("set names 'gbk'");
		res = stmt -> executeQuery ("SELECT * FROM tmytb"); 

		/* retrieve the row count in the result set */  
		cout << "/nRetrieved " << res->rowsCount() << " row(s)." << endl;  
		while (res->next())   
		{
			sql::SQLString  sqRet;
			sqRet = res -> getString("Col1");
			cout << sqRet.c_str() << "   ";
			sqRet = res -> getString("Col2");
			cout << sqRet.c_str() << endl;
		}

		/* Clean up */  
		delete res;  
		delete stmt;   
		con -> close();  
		delete con;  
	}catch (SQLException &e) { 
        return -1;  
    } catch (std::runtime_error &e) {    
        return -2;  
    }  
	getchar();
	return 0;  
}  





posted on 2017-10-12 21:27  zhuxian2009  阅读(283)  评论(0编辑  收藏  举报

导航