在VS2022中用C++连接MySQL数据库&读取数据库乱码问题

1.正确安装mysql

安装之后的配置文件

2.在VS2022中进行相关配置

(1)右键项目,打开属性

注意是右键项目,不是.cpp文件

(2)配置属性-> VC++目录 -> 包含目录 ->添加头文件路径(如图)

(3)配置属性-> VC++目录 -> 库目录 ->添加动态库路径(如图)

(4)在 链接器 -> 输入 ->附加依赖项 中输入libmysql.lib

(5) 将了lib文件夹中的libmysql.dll文件 复制到C:\Windows\System32

接下来 就可以可以运行代码了

cpp 复制代码
#include<iostream>
#include<mysql.h>

using namespace std;

int main() {
	MYSQL* conn;   // MySQL连接
	MYSQL_RES* res;   // MySQL查询结果
	MYSQL_ROW row;   // MySQL行

	// std::locale::global(std::locale("en_US.UTF-8"));  // 将程序的全局区域设置为 UTF-8 区域,

	//连接数据库的信息
	const char* server = "localhost";
	const char* user = "ml";
	const char* password = "123456";
	const char* datebase = "testdb";

	// 初始化MySQL连接
	conn = mysql_init(NULL);
	// 连接数据库
	if (conn == NULL) {
		cerr << "MYSQL数据库初始化失败" << endl;
		return 1;
	}

	if (mysql_real_connect(conn, server, user, password, datebase, 0, NULL, 0) == NULL) {
		cerr << "MYSQL数据库连接失败:" << mysql_error(conn) << endl;
		return 1;
	}


	// 查询数据库
	mysql_query(conn, "set names utf8");
	if (mysql_query(conn, "SELECT * FROM tb_user")) {

		cerr << "查询失败" << mysql_error(conn) << endl;
		return 1;
	}

	// 获取查询结果
	res = mysql_use_result(conn);
	//输出结果
	/*while ((row = mysql_fetch_row(res)) != NULL) {
		cout << row[0] << " " << row[1] << endl;
	}*/

	// 逐行输出结果
	while ((row = mysql_fetch_row(res)) != NULL) {
		// 输出当前行的所有列数据
		for (int i = 0; i < mysql_num_fields(res); ++i) {
			if (i > 0) {
				cout << " ";  // 列之间用空格分隔
			}
			if (row[i] == NULL) {
				cout << "NULL";  // 处理 NULL 数据
			}
			else {
				cout << row[i];
			}
		}
		cout << endl;  // 行尾输出换行符
	}

	// 释放结果
	mysql_free_result(res);
	// 关闭连接
	mysql_close(conn);

	return 0;
}

3.中文乱码

运行之后,中文乱码

这是因为:数据库编码格式为utf8mb4,但是黑窗口gbk,

所以要进行全局编码设置

问题解决!!

相关推荐
hasty3 分钟前
Origin 校验不是身份认证:MySQL MCP Server 漏洞给 AI 平台的警告
数据库·mysql·安全
梦想平凡1 小时前
百游棋牌源代码开发搭建教程(五):房间创建、座位分配与请求幂等实现
前端·javascript·数据库·源代码管理
凤山老林1 小时前
Spring Boot 整合 Flowable 的企业级落地指南
数据库·spring boot·后端·flowable·工作流
企业数字化笔记1 小时前
AI写的系统出现504怎么办?接口超时和数据库慢查询排查
数据库·后端
2601_962218612 小时前
万象生鲜系统订单全生命周期状态同步技术实现业务可视
大数据·数据库·人工智能·python·算法
Wang's Blog2 小时前
Java框架快速入门:Spring Security+OAuth2之用户注册与唯一性校验实现
java·数据库·spring
m0_734571762 小时前
深入理解C++ 析构函数<一>基本概念
开发语言·c++
跨境生态圈3 小时前
2026谷歌SEO快速排名深度解析:合规起量、避坑指南与实战落地策略
数据库·人工智能·爬虫·搜索引擎·chatgpt
JavaPub-rodert3 小时前
Docker 安装 MySQL 完整教程:从零部署数据库,到生产环境持久化配置
数据库·mysql·docker
隔窗听雨眠3 小时前
MySQL整库迁移至KaiwuDB完全指南:从数据类型映射到生产切换的系统性实践
数据库·mysql