在sqlite3中获取列名

时间:2011-08-24 01:07:37

标签: c++ c sqlite

我想打印我的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

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

答案 2 :(得分: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] ......将有列名。

答案 3 :(得分:0)

此设置将切换显示列名,作为选择语句返回的一部分:

Thread