文章目录

文章目录

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.pswp.cn/web/90641.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90641.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90641.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】-《GenAttack: Practical Black-box Attacks with Gradient-Free Optimization》

GenAttack&#xff1a;利用无梯度优化的实用黑盒攻击 Moustafa Alzantot UCLA Los Angeles, U.S.A malzantotucla.edu Yash Sharma Cooper Union New York, U.S.A sharma2cooper.edu Supriyo Chakraborty IBM Research New York, U.S.A supriyous.ibm.com Huan Zhang UCLA Los…

CT、IT、ICT 和 DICT区别

这四个术语&#xff1a;CT、IT、ICT 和 DICT&#xff0c;是信息通信行业中常见的核心概念&#xff0c;它们既有演进关系&#xff0c;又有各自的技术重点。&#x1f539; 一、CT&#xff08;Communication Technology&#xff09;通信技术**定义&#xff1a;**以语音通信为核心的…

Effective C++ 条款4:确定对象被使用前已先被初始化

Effective C 条款4&#xff1a;确定对象被使用前已先被初始化核心思想&#xff1a;永远在使用对象前将其初始化。未初始化对象是未定义行为的常见来源&#xff0c;尤其对于内置类型。 1. 内置类型手动初始化 int x 0; // 手动初始化 const char* text &quo…

LangSmith的配置介绍

文章目录注册及登录生成API KeyLangSmith的配置方式一&#xff1a;放运行环境里方式二&#xff1a;写代码里执行代码查看LangSmith上是否看到本次运行的项目记录LangSmith的其他注意注册及登录 首先使用邮箱注册一个账号及设置密码&#xff0c;等收到收到邮件后&#xff0c;进…

Linux的生态与软件安装

坚持用 清晰易懂的图解 代码语言&#xff0c;让每个知识点变得简单&#xff01; &#x1f680;呆头个人主页详情 &#x1f331; 呆头个人Gitee代码仓库 &#x1f4cc; 呆头详细专栏系列 座右铭&#xff1a; “不患无位&#xff0c;患所以立。” Linux的生态与软件安装前言目录…

3.4 安全-分布式-数据库-挖掘

一、数据库的安全数据库里面的安全措施&#xff1a;用户标识和鉴定&#xff1a;用户的账户口令等存取控制&#xff1a;对用户操作进行控权&#xff0c;有对应权限码才能操作。密码存储和传输&#xff1a;加密存储。视图的保护&#xff1a;视图需要授权审计&#xff1a;专门的文…

多线程 Reactor 模式

目录 多线程 Reactor 模式的核心动机 多线程演进方向 多线程 Reactor 模型结构 多线程 EchoServer 实现核心部分 Handler 的多线程化 多线程 Reactor 的三个核心点 本篇文章内容的前置知识为 单线程 Reactor 模式&#xff0c;如果不了解&#xff0c;可点击链接学习 单线程…

[NLP]多电源域设计的仿真验证方法

多电源域设计的仿真验证方法 1. 更复杂的 Testbench 例子(多电源域、复杂低功耗场景) 假设有两个电源域 PD1 和 PD2,分别对应控制信号 pwr_sw_ctrl1、iso_ctrl1、ret_ctrl1 和 pwr_sw_ctrl2、iso_ctrl2、ret_ctrl2,且两域之间有通信。 RTL 端口声明(简化版) module top…

Apache Ignite 中 WHERE 子句中的子查询(Subqueries in WHERE Clause)的执行方式

这段内容是关于 Apache Ignite 中 WHERE 子句中的子查询&#xff08;Subqueries in WHERE Clause&#xff09;的执行方式 的说明。理解这段内容对于编写高效的 SQL 查询、避免性能瓶颈非常重要。下面我将为你 逐句解释并深入理解这段内容。&#x1f9fe; 原文翻译 解释 原文&a…

MySQL(153)如何使用全文索引?

MySQL的全文索引&#xff08;Full-Text Index&#xff09;是一种特殊的索引类型&#xff0c;专门用于加速文本数据的搜索。与普通的B树索引不同&#xff0c;全文索引适用于大文本字段&#xff08;如TEXT、VARCHAR等&#xff09;的全文搜索。它通过构建一个倒排索引&#xff0c;…

微分方程入门之入门之入门,纯笔记

当描述 相对变化量 比 绝对量 更容易时&#xff0c;微分方程就经常用到了。 比如&#xff0c;描述为什么种群数量增加or减少【相对】&#xff0c;比描述为什么它在某个时间点是某个特定值【绝对】更容易。 物理学中&#xff0c;运动经常用力来描述&#xff0c;力–>代表变化…

【C++】简单学——vector类(模拟实现)

模拟实现的准备工作 看源码&#xff0c;了解这个类的大概组成 1.先看成员变量 成员变量的组成是三个迭代器 问&#xff1a;这个iterator内嵌类型究竟是什么&#xff1f;即这个迭代器是什么 迭代器实际就是T* 问&#xff1a;这三个迭代器代表什么意思&#xff1f; 连蒙带猜…

【WRF】根据自动安装脚本安装 WRF / WRF-CHEM等

目录 GitHub 上 WRF 自动安装脚本 ⚙️ 脚本的作用 🖥️ 支持的系统 📦 可安装的 WRF 版本及其选项 ✅ 如何使用(以 WRF 4.6.1 为例) ✅ 依赖库的安装位置 完整安装脚本分析 参考 GitHub 上 WRF 自动安装脚本 GitHub 上的 WRF-Install-Script 项目的 Releases(发布版本…

M²IV:面向大型视觉-语言模型中高效且细粒度的多模态上下文学习

MIV&#xff1a; Towards Efficient and Fine-grained Multimodal In Context Learning in Large Vision-Language Models COLM 2025 why 新兴的研究方向&#xff1a;上下文学习&#xff08;ICL&#xff09;的效果“向量化”&#xff0c;其核心思想是用transformer内部的向量来…

龙迅#LT8711UXD适用于Type-C/DP1.4 /EDP转 HDMI2.0 功能,分辨率高达4K60HZ,可支持HDCP!

1. 描述LT8711UXD 是一款高性能双通道 Type-C/DP1.4 转 HDMI2.0 转换器&#xff0c;旨在将 USB Type-C 源或 DP1.4 源连接到 HDMI2.0 接收器。该LT8711UXD集成了一个符合 DP1.4 标准的接收器和一个符合 HDMI2.0 标准的发射器。此外&#xff0c;还嵌入了两个用于CC通信的CC控制器…

《计算机组成原理与汇编语言程序设计》实验报告一 基本数字逻辑及汉字显示

目 录 一、实验学时 二、实验目的 三、实验要求 四、实验内容 五、实验步骤 1、打开Logisim软件&#xff0c;列出异或逻辑电路真值表&#xff0c;并使用与、或、非基本原件实现异或逻辑电路。 2、打开Logisim软件&#xff0c;列出同或逻辑电路真值表&#xff0c;并使用…

聚焦牛牛道:绿色积分模式如何实现快速发展?

​绿色消费积分政策再次进入大众视野&#xff0c;这种能为企业减轻库存负担、让咨金周转更灵活的促销方式&#xff0c;很快就成了焦点。牛牛道作为积极践行这一政策的平台&#xff0c;凭借其独树一帜的商业模式和运营思路&#xff0c;在短时间内就取得了显著发展。一、牛牛道平…

高频 RFID 赋能工业教学设备教学应用

高频 RFID 赋能工业教学设备教学应用应用背景传统工业教学设备侧重机械原理、电气控制等基础功能演示&#xff0c;缺乏对 RFID 等工业识别技术的具象教学载体。学生在理论学习中难以直观理解 RFID 技术的工业适配逻辑&#xff0c;实训中缺乏设备识别系统的部署、调试经验&#…

Transformer:颠覆NLP的自注意力革命

Transformer:颠覆NLP的自注意力革命 Transformer是自然语言处理领域中极具影响力的深度学习模型架构,以下是对其的详细介绍: 提出背景与应用:2017年,Vaswani等人在《Attention Is All You Need》论文中首次提出Transformer架构,它主要用于处理序列到序列的任务,如机器翻…

基于 KeepAlived + HAProxy 搭建 RabbitMQ 高可用负载均衡集群

基于 KeepAlived HAProxy 搭建 RabbitMQ 高可用负载均衡集群 基于 KeepAlived HAProxy 搭建 RabbitMQ 高可用负载均衡集群实战指南 一、前言 在企业级应用中&#xff0c;消息队列的高可用性是系统稳定性的重要保障。RabbitMQ 作为主流的消息中间件&#xff0c;虽然自身支持…