sqlite列出所有表信息

#include <sqlite3.h>
#include <stdio.h>
#include <string.h>

//回调函数
int ListTablesName_callback(void *pDB, int argc, char **argv, char **azColName)
{
    int ret;
    char pSqlQuerySel[128] = "select * from ";
    char *pError = NULL;
    sqlite3_stmt *pStmt = NULL;

    strcat(pSqlQuerySel, argv[0]);    
    fprintf(stdout, "%s\n", pSqlQuerySel);

        //准备读取数据
    ret = sqlite3_prepare((sqlite3 *)pDB, pSqlQuerySel, strlen(pSqlQuerySel), &pStmt, (const char**)&pError);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "sqlite3_prepare fail\n");
        return -1;
    }

    while (1)
    {
        ret = sqlite3_step(pStmt);        //移动记录集
        if (ret != SQLITE_ROW)
            break;

        fprintf(stdout, "%d ", sqlite3_column_int(pStmt, 0));
        fprintf(stdout, "%s \n", sqlite3_column_text(pStmt, 1));        
    }

    return 0;
}

int main()
{
    int ret = 0;
    sqlite3 *pDB = NULL;
    sqlite3_stmt *pStmt = NULL;
    char *pError = NULL;
    char *pListTablesNameSel = (char*)"SELECT name FROM sqlite_master";//列出所以表名语句

    //打开文件
    ret = sqlite3_open("test.db", &pDB);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "can't open database : %s\n", sqlite3_errmsg(pDB));

        sqlite3_close(pDB);
        return -1;
    }

  //查找源文件中所有表名    
    ret = sqlite3_exec(pDB, pListTablesNameSel, ListTablesName_callback, pDB, &pError);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "list table count error: %s", sqlite3_errmsg(pDB));

        sqlite3_close(pDB);
        return -1;
    }

    return 0;
} 

原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值