C++连接Mysql(使用mysql connector c++)

转载请注明出处,原文地址http://blog.csdn.net/zenki_kong/article/details/44810535

成功编译和连接,网上的教程我看了很多还是不成功,也看到好多人使用connector c++连接Mysql出现各种问题(诸如无法解析外部符号等),经过我的多番尝试,终于成功了

本文写的是使用mysql connector c++的方式进行C++连接MYSQL,如果想了解使用mysql API连接的请看我另一篇博客http://blog.csdn.net/zenki_kong/article/details/44810243

 

本文使用64位C++程序+64位的connector还有Mysql,32位的话应该更简单

之所以喜欢用connector的原因,是因为太方便了,跟直接操作mysql没什么区别

 

先交代一下环境,VS2013+64位MySql5.6.23安装版+Boost1.57(connector1.1版本后好像都需要用到这个库)+64位WIN7

 

1.首先说一下为何如此多人都出现编译报错,诸如无法解析的外部符号XXX等等,还找不到解决方法,这个可能是你的链接库和包含文件没包含正确,还很有可能是这个原因

妈妈的。。。这个问题也困扰了我很久。。。后来我想起了之前用mysql api也出现类似的问题。。然后就找到原因了。。。请看下图

这是我安装完64位后的mysql5.6.23...大家有没有发现很明显的问题。。。那就是除了mysql主体是64位,其他组件都是32位,我们要用到的connector c++也是32位的!

如果你的程序是64位的,当然是用不了32位的库,然后就出现无法解析的外部符号XXX的咯(ˉ﹃ˉ),感觉被甲骨文坑惨了。。。

如果你是32位的程序,那就可以无视这个问题了,如果你是64位的,,,要另行去官网下载64位版的connector c++……

 

这个是我用的64位1.1.5版本

 

 

安装完后我们再看看

connector c++变64位了,这就对了。。。

 

2.首先肯定是安装Mysql了,如果你使用WAMP或者PHPSTUDY等集成工具,应该是没有mysql connector的,去官网下一个吧,解压版或者安装版的也行,32位还是64位一定要跟你的c++程序一致,如果你是开发64位程序,就算是安装版那你也要去单独下一个64位版本的connector c++,原因就在第一点

 

3.下载Boost库,和安装,具体步骤如下

(1)到http://www.boost.org/下载Boost,这是我下载的版本http://jaist.dl.sourceforge.net/project/boost/boost/1.57.0/boost_1_57_0.zip

(2)安装这个也有点繁琐,跟着我来吧,首先把下载下来的压缩文件解压到你喜欢的地方,这个地方就是用来放boost库的了

(3)然后打开CMD命令控制台,进入到boost目录,打开bootstrap.bat

执行完后会发现Boost目录下多了个bjam.exe程序

打开这个bjam程序进行Boost安装,这个过程需要10-20分钟不等,具体我就不知道了,反正等了好久我就去歇了会……

到此,Boost库就安装成功了

 

4.继续我们的主题,打开VS2013,建起或打开你的程序,首先务必请选择你的平台,是32位还是64位,如果是64位,你需要转换一下,如下图

打开配置管理器

右上角活动解决方案平台点新建

 

5.设置包含的文件和库,先给大家看看我的mysql目录

 

我的mysql主程序是装载根目录的,你们的include和lib大概在mysql server里面,可以明显看到,我把64位和32位的connector c++都装了

(1)设置包含的文件和库,打开VS2013工程项目,打开项目-属性

包含的文件目录和库目录,各3个,请根据自己的路径来设置

6.上代码,当然你要事先建一个表来测试,至于函数的使用就自行度娘吧,之所以喜欢用connector的原因,是因为太方便了,跟直接操作mysql没什么区别

 

#include<iostream>
#include<winsock2.h>
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
#pragma  comment(lib,"debug\\mysqlcppconn.lib")
using namespace std;

int main()
{
	sql::mysql::MySQL_Driver *driver;
	sql::Connection *conn;
	sql::Statement *state;
	sql::ResultSet *result;
	driver = sql::mysql::get_driver_instance();
	conn = driver->connect("localhost", "root", "root");
	state = conn->createStatement();
	state->execute("use dnd");
	result = state->executeQuery("select * from user");
	//// 输出查询  
	while (result->next()!=NULL)
	{
		cout<<result->getString("account")<<endl;
	}
	Sleep(10000);
	return 0;
}

 

 

 

7.这时编译调试弹出一个缺少mysqlcppconn.dll的错误

解决方法:把对应版本(Debug/Release)的mysqlcppconn.dll放到生成的exe目录下(注意如果你切换了x64平台,你可能创建了新的解决方案目录,这时应该放在x64\debug(release)目录下,里面有生成64位exe程序),反正mysqlcppconn.dll一定要跟对应版本(是32还是64位,是Debug还是Release)的exe放一起。

 

再编译调试,这时又有问题(ˉ﹃ˉ)……缺少msvcp100d.dll和msvcr100d.dll,我用VS2013有这个问题,用VS2010的同学不知道有木有这个问题呢?

解决方法:去度娘搜索下一个吧,注意要下对应的版本,32位和64位要区分,不然会出错

64位的:http://download.csdn.net/download/chinaworker/5766637(亲测可用)

32位的亲自己去找找吧,我懒……(─.─|||

8.再次编译运行……终于成功了!!!

 

表示真的很繁琐,也很容易出错,看了网上好多教程也搞不好,最后自己苦拼一两天,终于不负有心人……

如果按照本文章来做还出现问题,欢迎跟帖回复,也请仔细看看文章看看是不是哪里设置不对了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章