以下是一个封装好的函数,用于在Linux C/C++中使用MySQL进行分页查询,并每次返回100条数据。

#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 定义MySQL连接信息
#define DB_HOST "localhost"
#define DB_USER "root"
#define DB_PASS "password"
#define DB_NAME "database"

// 定义每页返回的数据量
#define PAGE_SIZE 100

// 定义查询语句
#define SELECT_QUERY "SELECT a,b,c FROM bo_eu_firewall_network_available LIMIT %d, %d"

void queryData(int offset) {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    // 初始化MySQL连接
    conn = mysql_init(NULL);

    // 连接到数据库
    if (!mysql_real_connect(conn, DB_HOST, DB_USER, DB_PASS, DB_NAME, 0, NULL, 0)) {
        fprintf(stderr, "Error: %s\n", mysql_error(conn));
        exit(1);
    }

    // 构建查询语句
    char query[100];
    snprintf(query, sizeof(query), SELECT_QUERY, offset, PAGE_SIZE);

    // 执行查询
    if (mysql_query(conn, query)) {
        fprintf(stderr, "Error: %s\n", mysql_error(conn));
        exit(1);
    }

    // 获取查询结果
    res = mysql_use_result(conn);

    // 遍历结果集并输出数据
    while ((row = mysql_fetch_row(res)) != NULL) {
        printf("%s\t%s\t%s\n", row[0], row[1], row[2]);
    }

    // 释放结果集
    mysql_free_result(res);

    // 关闭数据库连接
    mysql_close(conn);
}

int main() {
    int offset = 0;
    int totalRecords = 0;

    // 初始化MySQL连接
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    conn = mysql_init(NULL);

    if (!mysql_real_connect(conn, DB_HOST, DB_USER, DB_PASS, DB_NAME, 0, NULL, 0)) {
        fprintf(stderr, "Error: %s\n", mysql_error(conn));
        exit(1);
    }

    // 查询总记录数
    if (mysql_query(conn, "SELECT COUNT(*) FROM bo_eu_firewall_network_available")) {
        fprintf(stderr, "Error: %s\n", mysql_error(conn));
        exit(1);
    }

    res = mysql_use_result(conn);
    if ((row = mysql_fetch_row(res)) != NULL) {
        totalRecords = atoi(row[0]);
    }
    mysql_free_result(res);
    mysql_close(conn);

    // 分页查询数据
    while (offset < totalRecords) {
        queryData(offset);
        offset += PAGE_SIZE;
    }

    return 0;
}

在使用之前,请将DB_HOSTDB_USERDB_PASSDB_NAME替换为自己的数据库连接信息。另外,这里假设数据库中的表名为bo_eu_firewall_network_available,并且表中的字段为abc

这个程序会首先查询总记录数,然后根据每页返回的数据量进行分页查询,直到查询完所有数据为止。每次查询100条数据,并将每条数据的字段值打印出来

linux cc++ mysql sql语句SELECT abc FROM bo_eu_firewall_network_available;使用分页查询每次查询100条数据回来要求函数封装好给出实现代码

原文地址: http://www.cveoy.top/t/topic/hZMf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录