我的数据库是8.0版本
首先打开vs2019,打开自己的项目,
然后右键点击 自己的项目,然后点击属性
在属性页找到包含目录和库目录,接下来我们要分别添加他们所需要的文件
注意!! 不要关闭vs2019,缩小化即可
找到本机的mysql的安装目录,如果是默认目录应该在:C:\Program Files\MySQL\MySQL Server 8.0这个目录下
进入该目录
进入include目录,因为里面有我们需要的头文件等信息
复制该目录的路径 ,然后打开vs2019刚才的属性页面
点击包含目录后边的箭头,然后点击编辑
然后把复制的目录路径添加到这里,然后点击确定
使用相同的方法把 mysql目录下的lib目录路径页复制下来,这里边都是我们所需要的静态库和动态库,
注意添加路径时,包含目录 和 库目录一定要分清,别弄混了
接下载引入依赖库
输入libmysql.lib,这个文件在 mysql安装目录下的 lib 目录下,就是刚刚我们引入的那个库目录,这里要手动输入
注意!!!!!千万别把后缀名打成 .dll了,这个是动态库的,我们要引入静态库后缀名是.lib
还有最重要的一步,引入 动态库 .dll
如果不引入动态库,运行的时候就会提示找不到 libmysql.dll库
把libmysql.dll 这个文件 复制 到 C:\Windows\System32 目录下
注意!!!! 这次是 .dll 文件 可别复制了 .lib 文件了
接下来就该用代码连接MYSQL数据库了,就让我们开始吧,为了方便演示,我就都写到main里了,实战中大家一定要遵循封装性!!!
#include <iostream>
#include <string>
#include <mysql.h>
using namespace std;
int main(void)
{
MYSQL mysql; //定义mysql对象
MYSQL_RES* res; //查询结果集
MYSQL_ROW row; //从结果集读取数据,拆分成行数
char sql[256]; //定义一个存放sql语句的数组
string username; //用户名
string password; //密码
cout << "请输入用户名:" << endl;
cin >> username;
cout << "请输入密码:" << endl;
cin >> password;
mysql_init(&mysql); //初始化数据库
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"); //我这里修改了一下字符集,设置gbk编码
//最后边两个参数用不到,就置为NULL,和 0;
//mysql_error(MYSQL* mysql); 这个函数是mysql自己封装好的api接口,我们直接使用即可,用来打印错误信息的;
//
//
//mysql_real_connect(&mysql,"127.0.0.1",数据库账户,数据库密码,要连接的数据库,端口号一般为3306,NULL,0)
if (mysql_real_connect(&mysql) == NULL) {
printf("数据库连接出错 , 错误原因: %s\n", mysql_error(&mysql));
exit(-1);
}
//snprintf是格式化输出字符串 带长度类型的函数
snprintf(sql, sizeof(sql), "select * from userinfo where username='%s' and password=md5('%s');", username.c_str(), password.c_str());
if (mysql_query(&mysql, sql)) {//执行sql语句,成功返回0;
printf("数据库查询出错,%s 错误原因: %s\n", sql, mysql_error(&mysql));
mysql_close(&mysql);
}
res = mysql_store_result(&mysql);
row = mysql_fetch_row(res);
if (row == NULL) {//没有查找到记录
mysql_free_result(res); //释放资源
mysql_close(&mysql); //关闭数据库
return false;
}
cout << row[0]<<endl;
cout << row[1]<<endl;
cout << row[2]<<endl;
return 0;
}