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