我想将我的iPhone应用程序迁移到新的数据库版本.由于我没有保存某些版本,我需要检查是否存在某些列名.
此Stackoverflow条目建议执行select
SELECT sql FROM sqlite_master
WHERE tbl_name = 'table_name' AND type = 'table'
Run Code Online (Sandbox Code Playgroud)
并解析结果.
这是常见的方式吗?备择方案?
对于踢,我正在编写一个"模式文档"工具,用于生成数据库中表和关系的描述.我目前正在填补它与SQLite合作.
我已经设法通过sqlite_master表上的查询提取SQLite数据库中所有表的名称.对于每个表名,我然后触发一个简单的名称
select * from <table name>
Run Code Online (Sandbox Code Playgroud)
查询,然后使用sqlite3_column_count()和sqlite3_column_name()API收集列名称,我进一步提供sqlite3_table_column_metadata()以获取其他信息.很简单吧?
问题是它只适用于非空的表.也就是说,sqlite_column_*()API仅sqlite_step()在返回时才有效SQLITE_ROW,而空表不是这种情况.
所以问题是,我如何发现空表的列名?或者,更一般地说,是否有更好的方法在SQLite中获取此类模式信息?
我觉得必须有另一个隐藏的sqlite_xxx表隐藏在包含这些信息的地方,但到目前为止还没有找到它.