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) 编辑 收藏 举报