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

embedded/2025/1/19 19:41:05/

1.正确安装mysql

安装之后的配置文件

2.在VS2022中进行相关配置

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

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

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

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

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

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

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

#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,

所以要进行全局编码设置

问题解决!!


http://www.ppmy.cn/embedded/155298.html

相关文章

在.NET用C#将Word文档转换为HTML格式

将Word文档转换为HTML格式尤其具有显著的优势&#xff0c;它不仅能够确保文档内容在多种设备和平台上保持一致灵活的显示&#xff0c;还便于通过网络进行传播和集成到各种Web应用中。随着越来越多的企业和开发者寻求更灵活、更具兼容性的文件处理方式&#xff0c;.NET框架下的C…

高效构建与部署Python Web应用:FastAPI的测试与持续集成

高效构建与部署Python Web应用&#xff1a;FastAPI的测试与持续集成 目录 &#x1f9ea; FastAPI的单元测试与集成测试&#x1f6e0;️ 使用pytest和unittest编写高效测试用例&#x1f504; 持续集成与持续部署&#xff08;CI/CD&#xff09;实践 &#x1f680; GitLab CI配置…

MongoDB 学习建模与设计思路--统计数据更新案例

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;共2700人左右 1 …

docker 部署confluence

1.安装docker的过程就不说了。 2.下载镜像。 docker pull cptactionhank/atlassian-confluence:7.4.0 docker images 3.下载pojie 包。 https://download.csdn.net/download/liudongyang123/90285042https://download.csdn.net/download/liudongyang123/90285042https://do…

AI刷题-最小替换子串长度、Bytedance Tree 问题

目录 一、最小替换子串长度 问题描述 输入格式 输出格式 输入样例 1 输出样例 1 输入样例 2 输出样例 2 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、Bytedance Tree 问题 问题描述 输入格式 输…

线上工单引发的思考:Spring Boot 中 @Autowired 与 @Resource 的区别

最近接手了离职同事负责的业务&#xff0c;在处理一个线上工单的时候&#xff0c;看了下历史逻辑&#xff0c;在阅读他们写的代码时&#xff0c;发现他们竟然把Autowired和Resource注解混用。今天就借此机会聊聊SpringBoot项目中这两者之间的区别。 1. 注解来源 Autowired&am…

Asp.Net Core 8.0 使用 Serilog 按日志级别写入日志文件的两种方式

1、所需的Nuget包 本文项目的版本是.NET 8.0&#xff0c;如果使用其它版本安装适配版本即可。 Serilog.AspNetCore(8.0.2) Serilog.Sinks.File(5.0.0) Serilog.Expressions(5.0.0) 2、两种配置方式 2.1 代码形式&#xff08;Program.cs&#xff09; 在Program.cs文件中&am…

rabbitmq安装延迟队列

在RabbitMQ中&#xff0c;延迟队列是一种特殊的队列类型。当消息被发送到此类队列后&#xff0c;不会立即投递给消费者&#xff0c;而是会等待预设的一段时间&#xff0c;待延迟期满后才进行投递。这种队列在多种场景下都极具价值&#xff0c;比如可用于处理需要在特定时间触发…