0、前提
安装后的文件概览
编译器: VC++2010
MySQL版本:MySQL5.6.19 for win64
Connector版本:connector c++ 1.1.3
在VS2010下配置使用MySQL
1、配置头文件
项目属性--VC++目录--包含目录
2、配置库文件
在connector c++ 1.1.3lib目录下有两个目录:debug目录 和 opt目录
libdebug目录
libopt目录
由于有debug目录,所以猜测opt目录可能是类似release目录的优化(optimize)后的文件,因此在VC++中使用时在Debug下使用debug目录下的库文件,在Release模式下使用opt目录下的库目录。
eg.
#ifdef _DEBUG
#pragma comment(lib, "debug下的mysqlcppconn.lib")
#pragma comment(lib, "debug下的mysqlcppconn-static.lib")
#else
#pragma comment(lib, "opt下的mysqlcppconn.lib")
#pragma comment(lib, "opt下的mysqlcppconn-static.lib")
#endif
另外,在Debug或Release模式下将debug或opt目录下的mysqlcppcon.dll拷贝到项目目录下或system32目录下。 将 MySQLMySQL Server5.6lib目录下的libmysql.dll拷贝到项目目录下或system32目录下。
3、配置项目
由于该版本的MySQL是64位的,因此使用该MySQL的connector的项目必须被配置为X64类型的。 否则会有链接错误! 这一点要注意!
4、Demo
数据库:db_1220, 表:tbl_user, MySQL服务器:本地的localhost
#include "stdafx.h"#include#include#include#include#include#include#include
#pragma warning(disable:4251)#ifdef _DEBUG#pragma comment(lib, "D:\Program Files\MySQL\Connector C++ 1.1.3\lib\debug\mysqlcppconn-static.lib")
#pragma comment(lib, "D:\Program Files\MySQL\Connector C++ 1.1.3\lib\debug\mysqlcppconn.lib")
#else
#pragma comment(lib, "D:\Program Files\MySQL\Connector C++ 1.1.3\lib\opt\mysqlcppconn-static.lib")
#pragma comment(lib, "D:\Program Files\MySQL\Connector C++ 1.1.3\lib\opt\mysqlcppconn.lib")
#endif
using namespacestd;int _tmain(int argc, _TCHAR*argv[])
{
sql::Driver*driver =NULL;
sql::Connection*con =NULL;
sql::Statement*stmt =NULL;
sql::ResultSet*res =NULL;
sql::SQLString strHost("localhost");
sql::SQLString strUser("root");
sql::SQLString strPwd("XXXXXXX");
sql::SQLString strSchema("db_1220");
sql::SQLString strQuery("select * from tbl_user");try{
driver=get_driver_instance();
con= driver->connect(strHost, strUser, strPwd);
con->setSchema(strSchema);
stmt= con->createStatement();
res= stmt->executeQuery(strQuery);
sql::ResultSetMetaData* pMetaData = res->getMetaData();
cout<
cout<< "Results have" << res->rowsCount() << "rows" << endl <next())
{//get data by column name
cout << res->getInt("id")<< " "
<< res->getString("name").c_str() //sql::SQLString没有重载<getString("name")
<< " "
<< res->getString("password").c_str()<
cout << res->getInt(1)<< " "
<< res->getString(2).c_str()<< " "
<< res->getString(3).c_str()<
}
}catch (sql::SQLException&e)
{
cerr<< endl << e.what() <
}catch(...)
{
cerr<< endl << "some exception happeded" <
}if (NULL !=res)
delete res;if (NULL !=stmt)
delete stmt;if (NULL !=con)
delete con;
cout<< endl <
}
运行结果:
5、补充
如果在编译过程中报错找不到类似 “”这样的错误信息,则是需要boost库支持,下载boost库配置一下即可。