sqlites数据库读取,仅适用于数据少的数据库查询【改进版】

直接使用运行程序时加入数据库名和表明,直接完成查询

如:编译后的可执行程序为test,则在命令行输入

./test test.db name

代码如下:

objectivec 复制代码
#include <stdio.h>
#include <sqlite3.h>

static int callback(void *data, int argc, char **argv, char **azColName) {
    int i;
    static int lines = 0;
    
    for (i = 0; i < argc; i++) {
        printf("[%d] %s = %s\n", i, azColName[i], argv[i] ? argv[i] : "NULL");
    }
    lines++;
    printf("第%d行数据查询完毕...\n", lines);
    return 0;
}

int main(int argc, char *argv[]) {
    sqlite3 *db;
    char *errMsg = 0;
    int rc;

    // 检查参数数量
    if (argc < 3) {
        fprintf(stderr, "使用方法: %s 数据库文件 表名\n", argv[0]);
        return 1;
    }

    const char *db_filename = argv[1]; // 数据库文件名从命令行参数获取
    const char *table_name = argv[2];  // 表名从命令行参数获取

    // 打开数据库连接
    rc = sqlite3_open(db_filename, &db);
    if (rc) {
        fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));
        return 0;
    } else {
        fprintf(stdout, "成功打开数据库\n");
    }

    // 构建SQL查询语句
    char *sql = malloc(strlen("SELECT * FROM ") + strlen(table_name) + 1);
    sprintf(sql, "SELECT * FROM %s;", table_name);
    
    // 查询指定表中的所有记录
    rc = sqlite3_exec(db, sql, callback, 0, &errMsg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL错误: %s\n", errMsg);
        sqlite3_free(errMsg);
    } else {
        fprintf(stdout, "查询成功\n");
    }

    // 清理SQL语句
    free(sql);

    // 关闭数据库连接
    sqlite3_close(db);

    return 0;
}
相关推荐
IvorySQL2 小时前
PostgreSQL 技术日报 (3月5日)|规划器控制力升级,内核能力再进阶
数据库·postgresql·开源
数据组小组16 小时前
免费数据库管理工具深度横评:NineData 社区版、Bytebase 社区版、Archery,2026 年开发者该选哪个?
数据库·测试·数据库管理工具·数据复制·迁移工具·ninedata社区版·naivicat平替
悟空聊架构1 天前
基于KaiwuDB在游乐场“刷卡+投币”双模消费系统中的落地实践
数据库·后端·架构
IvorySQL1 天前
PostgreSQL 技术日报 (3月4日)|硬核干货 + 内核暗流一网打尽
数据库·postgresql·开源
进击的丸子1 天前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端
NineData2 天前
NineData智能数据管理平台新功能发布|2026年1-2月
数据库·sql·数据分析
IvorySQL2 天前
双星闪耀温哥华:IvorySQL 社区两项议题入选 PGConf.dev 2026
数据库·postgresql·开源
ma_king2 天前
入门 java 和 数据库
java·数据库·后端
jiayou642 天前
KingbaseES 实战:审计追踪配置与运维实践
数据库
NineData3 天前
NineData 迁移评估功能正式上线
数据库·dba