Linux C/C++ MySQL 分页查询 - 代码示例
#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;
}
原文地址: https://www.cveoy.top/t/topic/pIQr 著作权归作者所有。请勿转载和采集!