2011-04-18 43 views
0

我试图捕获表中的字段,但即使表为空,我也需要获取该数据。在empy表中的SQLite列名C

sqlite3_table_column_metadata不是一个选项(它没有编译到我的SQLite3版本)。

获取该信息有诀窍吗?

回答

2
PRAGMA table_info(table_name); 

返回列名

列表继承人的链接:

http://www.sqlite.org/pragma.html#pragma_table_info

+0

谢谢。但我已经完成了使用sqlite3_prepare和之前的步骤功能,所以我可以得到sqlite3_column_decltype,sqlite3_column_count,sqlite3_column_name表中的细节。 – Freaktor 2011-04-21 03:17:31

1

如果你在本地运行你可以下载源代码和编译你喜欢的任何选项。但是,如果这不是一个选项,还有几种方法可以获取元数据。

您可以查询sqlite_master表,但数据不是可能的最友好形式。

select sql 
from sqlite_master 
where type='table' and name='your-table-name'; 

该查询将返回CREATE TABLE语句。预计格式化意外。

如果您可以从c界面发出“点”命令,您可以打开列标题,然后查询任何表。这是从sqlite提示符看起来的样子。

sqlite> .headers on 
sqlite> select * from file_stats; 
date|file_id|num_lines 

有没有简单的方法来获取数据类型只是通过列名。除非表中有数据,否则typeof()函数不会返回任何内容。

我打算加入pragma table_info()函数,但是Trevor打败了我。我不知道你是否可以从c api发布杂注语句。