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;
}
相关推荐
主角1 72 分钟前
MySQL高可用集群
数据库·mysql
dajun1811234568 分钟前
信息系统运维管理全流程详解 在线画图工具绘制运维流程图表技巧
运维·数据库·信息可视化·流程图·旅游·论文笔记
流觞 无依10 分钟前
SQLite数据库损坏修复指南——解决“database disk image is malformed”报错
jvm·数据库·sqlite
道清茗11 分钟前
【MySQL知识点问答题】 安全与性能管理
数据库·mysql
2501_9206276118 分钟前
Flutter 框架跨平台鸿蒙开发 - 数据库学习助手
数据库·学习·flutter·华为·harmonyos
ZStack开发者社区23 分钟前
阿里云 × ZStack:云端管得好,边端交付稳
数据库·边缘计算
TDengine (老段)24 分钟前
TDengine IDMP 可视化 —— 趋势图
大数据·数据库·人工智能·物联网·时序数据库·tdengine·涛思数据
万邦科技Lafite27 分钟前
淘宝关键词API接口获取分类商品信息指南
java·前端·数据库·开放api·淘宝开放平台
RisunJan29 分钟前
Linux命令-mysqlshow(显示MySQL中数据库相关信息)
linux·数据库·mysql
_下雨天.34 分钟前
PostgreSQL初体验
数据库·postgresql