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

mysql_store_result的概念和使用案例

mysql_store_result() 是 MySQL C API 中的一个函数,用于检索一个完整的结果集到一个客户端。当执行一个查询(通常是 SELECT 查询)并希望处理所有返回的数据时,可以使用此函数。

概念

mysql_store_result() 函数的原型如下:

MYSQL_RES *mysql_store_result(MYSQL *mysql)
  • mysql:这是一个指向 MYSQL 结构的指针,该结构代表到一个 MySQL 服务器的连接。
    如果查询成功并返回数据,mysql_store_result() 将返回一个 MYSQL_RES 结构的指针,该结构包含结果集。如果查询没有返回结果集(例如,执行的是 INSERTUPDATEDELETE 语句),则返回 NULL。如果发生错误,mysql_store_result() 也会返回 NULL,此时可以通过 mysql_error() 函数获取错误信息。

使用案例

以下是一个使用 mysql_store_result() 的例子:

#include <mysql/mysql.h>
#include <stdio.h>
int main() {
    MYSQL *conn;
    MYSQL_RES *result;
    MYSQL_ROW row;
    unsigned int num_fields;
    unsigned int i;
    // 初始化连接
    conn = mysql_init(NULL);
    // 连接到数据库
    if (mysql_real_connect(conn, "host", "user", "password", "database", 0, NULL, 0) == NULL) {
        fprintf(stderr, "%s\n", mysql_error(conn));
        mysql_close(conn);
        exit(1);
    }
    // 执行查询
    if (mysql_query(conn, "SELECT id, name FROM users")) {
        fprintf(stderr, "%s\n", mysql_error(conn));
        mysql_close(conn);
        exit(1);
    }
    // 存储结果集
    result = mysql_store_result(conn);
    if (result == NULL) {
        fprintf(stderr, "%s\n", mysql_error(conn));
        mysql_close(conn);
        exit(1);
    }
    // 获取列数
    num_fields = mysql_num_fields(result);
    // 遍历结果集
    while ((row = mysql_fetch_row(result))) {
        for (i = 0; i < num_fields; i++) {
            printf("%s ", row[i] ? row[i] : "NULL");
        }
        printf("\n");
    }
    // 释放结果集
    mysql_free_result(result);
    // 关闭连接
    mysql_close(conn);
    return 0;
}

在这个例子中,我们首先连接到 MySQL 数据库,然后执行一个 SELECT 查询。使用 mysql_store_result() 函数将查询结果存储在 result 变量中。然后,我们使用 mysql_num_fields() 函数获取结果集中的列数,并使用 mysql_fetch_row() 函数遍历每一行数据。每行数据都通过 row 变量访问,并打印出来。处理完所有数据后,我们使用 mysql_free_result() 释放结果集,最后关闭数据库连接。
请注意,mysql_store_result() 会将整个结果集加载到客户端内存中,对于非常大的结果集,这可能会导致内存不足的问题。在这种情况下,可以考虑使用 mysql_use_result(),它会逐行检索结果,但需要更谨慎地处理,因为它会保持与服务器的连接打开状态,直到结果集被完全读取。


http://www.kler.cn/a/520420.html

相关文章:

  • Cursor的简单使用
  • 关于MySQL InnoDB存储引擎的一些认识
  • 【25考研】人大计算机考研复试该怎么准备?有哪些注意事项?
  • Python从0到100(八十五):神经网络与迁移学习在猫狗分类中的应用
  • webview_flutter_wkwebview3.17.0 --Cookie认证
  • [VSCode] vscode下载安装及安装中文插件详解(附下载链接)
  • 设置jmeter界面图标字体大小
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-activation.py
  • 【从零到一,C++项目实战】CineShare++(基于C++的视频点播系统)
  • 01-01 五元组
  • langchain介绍
  • 约数个数(简单)
  • 设计模式-创建型模式-抽象工厂模式
  • 使用.NET 8构建高效的时间日期帮助类
  • MySQL--》深度解析InnoDB引擎的存储与事务机制
  • 双指针(一)
  • TRTC实时对话式AI解决方案,助力人机语音交互极致体验
  • 【可实战】Linux 系统扫盲、 Shell扫盲(如何写一个简单的shell脚本)
  • 适用于 Windows 的 11 款最佳照片恢复软件
  • Pyecharts之双轴图表的魅力
  • 速通 AI+Web3 开发技能: 免费课程+前沿洞察
  • Hook 函数
  • 计网week1+2
  • 【Redis】常见面试题
  • 分布式与微服务:构建现代应用的关键架构
  • 网络工程师 (1)数据的表示