首页 文章

在sqlite3中获取列名

提问于
浏览
5

我想打印我的sql表内容,因此,我想从表中检索列名 . 我遇到的一个解决方案是:

SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name' AND type = 'table'

但看起来我将不得不解析结果 .

另一个建议是使用:

PRAGMA table_info(table_name);

但是下面的sqlite页面建议不要使用它:http://www.sqlite.org/pragma.html#pragma_full_column_names

有没有办法实现这一目标 . 还有什么是使用的语法

PRAGMA table_info(table_name);

以上解决方案取自here

3 回答

  • 5

    由于您的问题已被标记 c 我假设您可以访问SQLite C API . 如果使用从所需表中选择的prepare_v2 functions之一创建预准备语句,则可以使用sqlite3_column_name获取每列的名称 .

  • 3

    你可以安全地使用PRAGMA table_info(table-name);,因为它没有以任何方式被弃用(你的链接发布到另一个pragma) .

  • 1
    int sqlite3_get_table(
        sqlite3 *db,          /* An open database */
        const char *zSql,     /* SQL to be evaluated */
        char ***pazResult,    /* Results of the query */
        int *pnRow,           /* Number of result rows written here */
        int *pnColumn,        /* Number of result columns written here */
        char **pzErrmsg       /* Error msg written here */
        );
    

    如果你使用c / c,你可以使用函数sqlite3_get_table(db,query,result,nrow,ncol,errmsg);

    将查询作为select * from table;

    前几个结果[0],结果[1] ......将有列名 .

相关问题