【发布时间】:2014-05-16 02:25:18
【问题描述】:
我的 iOS 应用程序在与 SQLite 数据库交互时依赖特定 pragma 语句的功能是否安全?
在 SQLite 的未来版本中可能会删除特定的 pragma 语句并添加其他语句。不保证向后兼容。
但是,根据this upvoted SO answer:
您可以使用编译指示来获取索引列:
PRAGMA 索引信息(索引名称);
这个是用来获取表的列名的:
PRAGMA 表信息(表名);
我的具体用例是我希望我的 iOS 应用程序在通过 FMDB SQLite 包装器进行查询之前检查特定列是否存在。我担心使用 PRAGMA table_info(table-name) 可能会在假设的未来 iOS 版本中产生意想不到的结果,其中包括更新版本的 SQLite,其中维护人员决定放弃对这个 pragma 语句的支持。
【问题讨论】:
-
另一种选择是尝试准备一个仅查询表中那一列的语句。如果准备语句失败,您就知道该列不存在。也许在应用启动时做一次检查。
-
感谢您的意见。这就是我现在打算做的事情(即
SELECT column-name FROM table-name LIMIT 1并检查错误)。