visual studio2019 C++连接mysql环境配置
下载mysql
下载就不说了,网上一大堆,但是这里的话,我最大的问题就是,之前下载的是32位的,以至于到后来,我根本无法连接到数据库。所以一定要下64位的mysql,另外如果有下错版本的,我这里有32位和64位两个版本的libmysql.lib和libmysql.dll,可以私聊我。
环境配置
右键项目选择属性;打开之后:
-
修改配置和平台 ,平台一定要修改成x64;
-
然后点击C/C++ ,有一个附加包含目录,改成你自己的路径,我这里的路径是E:\phpweb\mysql\include。修改之后是这样:
-
找到链接器下的常规 ,然后常规目录下有一个附加库目录,然后编辑添加路径。我的路径是E:\phpweb\mysql\lib,如图:
-
点击链接器下的输入 ,输入下面有一个附加依赖项,添加libmysql64.lib,这里的64是我重命名之后的,为了区分libmysql.lib(这个是32位的)。如图:
然后点击确定。 -
如果出现这种情况,需要把libmysql.dll复制到x64/Debug下,libmysql.dll也必须是64位的,之前由于这个是32位的,所以出现sql语句调用不了的情况。
把libmysql.dll放入到x64/Debug下是这样的:
然后就可以运行了。
重点
一定要把libmysql.lib和libmysql.dll的版本下对,否则版本不匹配会连接不了mysql。我就是因为这个原因折腾了一晚上也没弄对,头都大了。为了防止以后会再掉进坑里,还是记录下来比较好。
检测代码
#include <winsock.h>
#include <iostream>
#include <string>
#include <mysql.h>
using namespace std;
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql64.lib")
//单步执行,不想单步执行就注释掉
#define STEPBYSTEP
int main() {
cout << "****************************************" << endl;
#ifdef STEPBYSTEP
system("pause");
#endif
//必备的一个数据结构
MYSQL mydata;
//初始化数据库
if (0 == mysql_library_init(0, NULL, NULL)) {
cout << "mysql_library_init() succeed" << endl;
}
else {
cout << "mysql_library_init() failed" << endl;
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//初始化数据结构
if (NULL != mysql_init(&mydata)) {
cout << "mysql_init() succeed" << endl;
}
else {
cout << "mysql_init() failed" << endl;
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//在连接数据库之前,设置额外的连接选项
//可以设置的选项很多,这里设置字符集,否则无法处理中文
if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) {
cout << "mysql_options() succeed" << endl;
}
else {
cout << "mysql_options() failed" << endl;
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//连接数据库
if (NULL
!= mysql_real_connect(&mydata, "localhost", "root", "111111", "test",
3306, NULL, 0))
//这里的地址,用户名,密码,端口可以根据自己本地的情况更改
{
cout << "mysql_real_connect() succeed" << endl;
}
else {
cout << "mysql_real_connect() failed" << endl;
return -1;
}
}
运行成功图: