C++查询mysql数据

文章目录

文章目录

1.前言

2. 代码

(1)执行查询SQL

(2)获取结果集

(3)遍历结果集(获取字段数、行数)

(4)释放资源

3.完整代码


1.前言

我们成功连接数据库mysql后,可以对mysql进行亿些操作,比如查询,插入,删除……

今天就来讲讲查询。

本文默认你已成功连接mysql,关于不知道如何连接mysql的自己看我之前的博文

C++连接MySQL完整教程https://blog.csdn.net/bilin_jam/article/details/149665533


2. 代码

(1)执行查询SQL

首先我们要先了解一个函数:mysql_query(),虽然query的意思是查询,但它不只只可以进行查询数据,它可以执行任何sql代码,用法如下:

const char* sql = "...(sql代码)";if (mysql_query(conn, sql) != 0) { std::cerr << "出错: " << mysql_error(conn) << std::endl;mysql_close(conn); return 1;}

我们要查询数据,就需要用到选择数据库的sql代码:

SELECT id,name,gender,level,createTime FROM bilin_user

 此处id,name,gender,level,createTime是我的数据库的列的名称。bilin_user是我数据库表格的名称。我的数据库大致如下:

bilin_user
idnamegenderlevel

createTime

1***2002024-10-05 16:19:11
2***1002024-10-05 17:32:10
3***412025-07-24 18:43:10

综上所述,执行查询的代码应如下:

// 1. 执行查询SQL ; const char* sql = "SELECT id,name,gender,level,createTime FROM bilin_user";if (mysql_query(conn, sql) != 0) { std::cerr << "查询失败: " << mysql_error(conn) << std::endl;mysql_close(conn); return 1;} 
(2)获取结果集

首先,我们可以用一段代码来获取:

MYSQL_RES* result = mysql_store_result(conn);

然后再获取错误,完整代码:

// 2. 获取结果集MYSQL_RES* result = mysql_store_result(conn); if (result == NULL) { std::cerr << "获取结果集失败: " << mysql_error(conn) << std::endl;mysql_close(conn); return 1;} 
(3)遍历结果集(获取字段数、行数)

 定义字段数:

int num_fields = mysql_num_fields(result);

定义一行数据(数组):

MYSQL_ROW row;

然后挨个输出即可: 

while ((row = mysql_fetch_row(result)) != NULL) { std::cout << row[0] << std::endl;std::cout << row[1] << std::endl;std::cout << row[2] << std::endl;std::cout << row[3] << std::endl;std::cout << row[4] << std::endl;} 

或者是这样(自动判断列数):

int num_row = mysql_field_count(conn);while ((row = mysql_fetch_row(result)) != NULL) { int num = 0;for ( num = 0; num <= num_row; num++){std::cout << row[num] << std::endl;}} 

 完整代码:

// 3. 遍历结果集(获取字段数、行数)int num_fields = mysql_num_fields(result); // 字段数MYSQL_ROW row; // 一行数据(数组)while ((row = mysql_fetch_row(result)) != NULL) { std::cout << row[0] << std::endl;std::cout << row[1] << std::endl;std::cout << row[2] << std::endl;std::cout << row[3] << std::endl;std::cout << row[4] << std::endl;} 
(4)释放资源
// 4. 释放资源 mysql_free_result(result);

3.完整代码

// 1. 执行查询SQL ; const char* sql = "SELECT id,name,gender,level,createTime FROM bilin_user";if (mysql_query(conn, sql) != 0) { std::cerr << "查询失败: " << mysql_error(conn) << std::endl;mysql_close(conn); return 1;} // 2. 获取结果集MYSQL_RES* result = mysql_store_result(conn); if (result == NULL) { std::cerr << "获取结果集失败: " << mysql_error(conn) << std::endl;mysql_close(conn); return 1;} // 3. 遍历结果集(获取字段数、行数)int num_fields = mysql_num_fields(result); // 字段数MYSQL_ROW row; // 一行数据(数组)while ((row = mysql_fetch_row(result)) != NULL) { std::cout << row[0] << std::endl;std::cout << row[1] << std::endl;std::cout << row[2] << std::endl;std::cout << row[3] << std::endl;std::cout << row[4] << std::endl;} // 4. 释放资源 mysql_free_result(result);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/2661.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习特征工程:特征选择及在医学影像领域的应用

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#,Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开发…

【GoLang#3】:数据结构(切片 | map 映射)

一、切片 之前我们在数组那举过一个例子&#xff1a;关于 值类型 和 引用类型的&#xff0c;如下&#xff1a; func main(){// 值类型: 数组var a1 [...]int{1, 2, 3}a2 : a1a1[0] 11fmt.Println(a1) // 11 2 3fmt.Println(a2) // 1 2 3// 引用类型: 切片var b1 []int{1, 2,…

Spring的深入浅出(6)--使用AOP的思想改造转账案例

在Spring中使用AOP&#xff08;基于注解&#xff09;使用AOP的思想改造转账案例业务类改造&#xff1a;移除事务管理代码public class AccountServiceImpl implements AccountService {private AccountDao accountDao;public void setAccountDao(AccountDao accountDao) {this.…

【LeetCode刷题指南】--有效的括号

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

【PyTorch】图像多分类项目

【PyTorch】图像二分类项目 【PyTorch】图像二分类项目-部署 【PyTorch】图像多分类项目 【PyTorch】图像多分类项目部署 多类图像分类的目标是为一组固定类别中的图像分配标签。 目录 加载和处理数据 搭建模型 定义损失函数 定义优化器 训练和迁移学习 用随机权重进行训…

详谈OSI七层模型和TCP/IP四层模型以及tcp与udp为什么是4层,http与https为什么是7层

一、网络模型&#xff1a;OSI七层 vs TCP/IP四层OSI七层模型 (理论参考模型):目的&#xff1a;提供一个标准化的理论框架&#xff0c;用于理解网络通信过程和各层的功能划分&#xff0c;促进不同厂商设备的互操作性。它是一个理想化的模型。分层 (从下到上):物理层&#xff1a;…

自然语言处理技术应用领域深度解析:从理论到实践的全面探索

1. 引言:自然语言处理的技术革命与应用前景 自然语言处理(Natural Language Processing,NLP)作为人工智能领域的核心分支,正在以前所未有的速度改变着我们的数字化生活。从最初的规则基础系统到如今基于深度学习的大语言模型,NLP技术经历了从理论探索到实际应用的深刻变…

Qt:qRegisterMetaType函数使用介绍

简介 在Qt中,qRegisterMetaType是一个用于向元对象系统注册自定义类型的函数。这对于需要在信号和槽中使用自定义类型(包括模板类如 std::shared_ptr)或用于排队连接(Queued Connection)非常重要。 作用: ​​使类型可用于信号与槽机制​​:特别是当信号和槽连接类型为…

《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——5. 集成OpenCV:让程序拥有“视力”

目录一、概述1.1 背景介绍&#xff1a;赋予应用“视力”1.2 学习目标二、集成OpenCV2.1 安装OpenCV2.2 在Qt项目中配置CMake三、项目数据集介绍与准备四、图像的桥梁&#xff1a;ImageProvider与格式转换五、加载、转换并显示图像六、总结与展望一、概述 1.1 背景介绍&#xf…

Grafana

官网&#xff1a;https://grafana.com/zh-cn/grafana/ 文章目录GrafanaGrafana Grafana 是一个非常强大且流行的开源数据可视化和监控平台。公司能有 Grafana 平台来监控各种程序状态&#xff0c;是运维、开发和业务洞察的利器。 数据可视化&#xff1a; 这是 Grafana 的看家本…

go语言基础教程:【1】基础语法:变量

【1】基础语法 1. 注释 package mainimport "fmt"func main() {// 单行注释// 这是一个终端打印文本的功能/*这是一个多行注释这是一个多行注释这是一个多行注释*/fmt.Println("hello world!") }2. 变量 &#xff08;1&#xff09;变量的基本使用 package …

AI大模型各类概念扫盲

以下内容整理自AI&#xff0c;进行一个概念扫盲&#xff1a;Prompt&#xff08;提示词&#xff09; Prompt是用户提供给AI模型的指令或问题&#xff0c;用于引导模型生成特定输出。良好的Prompt设计能显著提升模型的任务理解能力和响应质量&#xff0c;例如通过结构化提示&…