【发布时间】:2010-10-30 01:20:19
【问题描述】:
我正在编写一个“模式文档”工具,用于生成数据库中表和关系的描述。我目前正在调整它以与 SQLite 一起使用。
我已经设法通过对sqlite_master 表的查询来提取SQLite 数据库中所有表的名称。对于每个表名,然后我启动一个简单的
select * from <table name>
查询,然后使用sqlite3_column_count() 和sqlite3_column_name() API 收集列名,我进一步将其提供给sqlite3_table_column_metadata() 以获取更多信息。够简单吧?
问题是它只适用于非空表。也就是说,sqlite_column_*() API 仅在 sqlite_step() 已返回 SQLITE_ROW 时才有效,而空表则不然。
所以问题是,我怎样才能发现空表的列名?或者,更一般地说,有没有更好的方法在 SQLite 中获取这种类型的架构信息?
我觉得肯定有另一个隐藏的sqlite_xxx 表潜伏在某个包含此信息的地方,但到目前为止还没有找到它。
【问题讨论】:
-
谢谢大家。我误以为 PRAGMA 接口只适用于
sqlite3命令行客户端。