环境介绍
从昨天开始一直尝试搭一个IDE+MySQL的环境,本来可以在linux下做的,但是因为在公司,笔记本又是windows系统,只好在windows下尝试,遇到了超多的问题,各种报错,各种不行,还好最后终于成功,分享在此,为后面需要搭建环境的人做参考。
————分割——————
我的系统和软件环境如下:
windows10 64位系统,Visual Studio 2015 community(32位),MySQL 5.7(64位),除了VS2015之外,我电脑上还装了Codeblocks 16(32位),cb特别好用,所以一开始就想用cb+mysql的搭配,但搞了一天出了很多问题,包括版本不兼容等等。今天决定用VS尝试一下,等到在VS上装好环境之后,终于明白问题出在哪里,现在cb也能连数据库了。
MySQL Connector C 6.1安装
- VS2015在MSDN上就能下载,下载链接:http://msdn.itellyou.cn/,用迅雷下载。
- MySQL Community (GPL) Server下载:https://www.mysql.com/downloads/,我下载的是win64位版本。
安装过程此处略过。 - 这里要讲一下的是要想实现IDE和MySQL之间的连接,还需要一座“桥”,就我的理解这座桥可以是ODBC,也可以是MySQL Connector/C等,当然也要看你的开发语言,Java连数据库JDBC是比较主流的。Connector/C相当于C/C++IDE和MySQL Server之间连接的中间件,包含必需的头文件和链接库。
MySQL Connector/C下载页面:https://dev.mysql.com/downloads/connector/c/,我下载的是win32位的MySQL Connector C 6.1,下载msi格式的即可。 - 然后进行安装,默认安装完成后在C:\Program Files (x86)\MySQL下应该能看到MySQL Connector C 6.1文件夹,点进去有几个文件夹,其中包括include和lib文件夹,这两个文件夹很重要。
VS2015 配置
- 在VS2015中新建一个项目ConsoleApplication1,然后打开菜单项目——ConsoleApplication1属性,如下:
- 在属性页C/C++——附加包含目录,点击编辑添加目录:C:\Program Files(x86)\MySQL\MySQL Connector C 6.1\include,该路径下包含mysql.h头文件。
- 在属性页链接器——输入中找到附加依赖项,点击可以进行编辑,添加依赖项的路径:C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib\libmysql.lib。
- 点击应用,确定,VS2015端配置完成。
- 还有一步,很重要!在C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib\路径下还有一个文件libmysql.dll文件,该文件是动态链接库,需要包含在项目的根路径中(网上也有说放在Windows/System32/下的,不过我试了没有用)。找到你的VS项目的根路径,默认的是C:\Users\~\Documents\Visual Studio 2015\Projects\ConsoleApplication1,然后在Release文件夹中添加libmysql.dll文件,直接复制过来即可。如果不添加dll动态链接库,可以正常编译,但是运行时会报错:由于找不到libmysql.dll,无法继续执行代码。重新安装程序可能会解决此问题。
- 然后编译运行你的C++程序,就发现可以正常运行了。如下是我的项目运行结果,使用C++进行数据库的增删改查。
建立和MySQL的连接之后,如何在C/C++中建立数据库连接以及进行数据库的增删改查,可以参照:http://blog.****.net/beiwei_31/article/details/76674024。
问题总结
- Windows系统是32/64位没有关系,MySQL5.7是多少位也没有关系,关键是你的VS/cb IDE的位数要和Connector/C的位数相同,不然会因为版本不兼容问题报错,我是在编译的时候报错:未定义函数…
- 必须将动态链接库dll文件添加到项目根目录中, 事实上我一开始在我的codeblocks中尝试失败的原因就是这个,后来将dll文件添加以后,就可以正常连接了。
-
在你的C/C++项目中进行数据库连接操作之前,记得开启你的MySQL server,windows下在Dos(管理员权限打开)或Powershell中输入net start mysqlname就可以打开。
完。