当前位置: 首页 > news >正文

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.lryc.cn/news/600393.html

相关文章:

  • RabbitMQ--Springboot解决消息丢失
  • JavaWeb01——基础标签及样式(黑马视频笔记)
  • Android WorkManager 详解:高效管理后台任务
  • InstructBLIP:通过指令微调迈向通用视觉-语言模型
  • Android Data Binding 深度解析与实践指南
  • 像素、视野、光源,都有哪些因素影响测量精度?
  • 数据中心-时序数据库InfluxDB
  • 【影刀RPA_初级课程_我的第一个机器人】
  • jxORM--查询数据
  • 前端模块化开发实战指南
  • 【机器学习深度学习】模型私有化部署与微调训练:赋能特定问题处理能力
  • Oracle 11g RAC数据库实例重启的两种方式
  • JavaScript:现代Web开发的核心动力
  • 基于深度学习的胸部 X 光图像肺炎分类系统(六)
  • 技术赋能与营销创新:开源链动2+1模式AI智能名片S2B2C商城小程序的流量转化路径研究
  • SpringBoot连接Sftp服务器实现文件上传/下载(亲测可用)
  • Linux选择题
  • 《从零开始学 JSSIP:JavaScript 实时通信开发实战》
  • Jmeter的元件使用介绍:(五)定时器详解
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现轮船检测识别(C#代码UI界面版)
  • PostGIS面试题及详细答案120道之 (011-020 )
  • 零基础学习性能测试第三章:jmeter构建性能业务场景
  • 论文阅读-RaftStereo
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-27,(知识点:信号完整性,信号反射,串扰,时延,抖动,衰减)
  • Qt 延时处理方法介绍
  • day 36打卡
  • 去中心化时代的通信革命:briefing与cpolar技术融合带来的安全范式革新
  • 明辨 JS 中 prototype 与 __proto__
  • 秋招Day19 - 分布式 - 限流
  • C++11 右值引用 Lambda 表达式