VS2019连接MYSQL8.0数据库(教程)

我的数据库是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;
}

猜你喜欢

转载自blog.csdn.net/weixin_45428525/article/details/120663711