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

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.xdnf.cn/news/16246.html

相关文章:

  • Codeforces Round 181 (Rated for Div. 2)
  • Bert项目--新闻标题文本分类
  • DAY31 整数矩阵及其运算
  • 告别镜像拉取慢!CNB无痛加速方案,一键起飞
  • [论文阅读] 人工智能 + 软件工程 | NoCode-bench:评估LLM无代码功能添加能力的新基准
  • JVM常见工具
  • swagger基本注解@Tag、@Operation、@Parameters、@Parameter、@ApiResponse、@Schema
  • 基于图神经网络的星间路由与计算卸载强化学习算法设计与实现
  • 【Linux手册】操作系统如何管理存储在外设上的文件
  • 基于 Claude Code 与 BrowserCat MCP 的浏览器自动化全链路构建实践
  • iOS 26,双版本更新来了
  • 【web大前端】001_前端开发入门:创建你的第一个网页
  • 二十八、【Linux系统域名解析】DNS安装、子域授权、缓存DNS、分离解析、多域名解析
  • 前端开发 Vue 结合Sentry 实现性能监控
  • 配置DNS正反向解析
  • 告别复杂配置!Spring Boot优雅集成百度OCR的终极方案
  • JAVA算法题练习day1
  • 常见代码八股
  • 【深度之眼机器学习笔记】04-01-决策树简介、熵,04-02-条件熵及计算举例,04-03-信息增益、ID3算法
  • 力扣671. 二叉树中第二小的节点
  • Spring框架
  • 【LeetCode刷题指南】--有效的括号
  • Springboot项目实现将文件上传到阿里云
  • 【PyTorch】图像多分类项目
  • Yolo底层原理学习(V1~V3)(第一篇)
  • 2507C++,窗口勾挂事件
  • 我从农村来到了大城市
  • 绘图库 Matplotlib Search
  • C语言案例《猜拳游戏》
  • 【C++进阶】第7课—红黑树