在与SQLite数据库连接时,我的iOS应用程序是否可以依赖特定的pragma语句的功能?
可能会删除特定的pragma语句,并在SQLite的未来版本中添加其他语句。无法保证向后兼容性。
然而,根据this upvoted SO answer:
您可以使用pragma获取索引列:
PRAGMA index_info(index-name);
这个用于获取表的列名:
PRAGMA table_info(table-name);
我的具体用例是,我希望我的iOS应用程序在通过FMDB SQLite包装器进行查询之前检查特定列是否存在。我担心使用PRAGMA table_info(table-name)
可能会在iOS的假设未来版本中产生意想不到的结果,其中包括更新版本的SQLite,其中维护者决定放弃对此pragma语句的支持。
答案 0 :(得分:1)
我更倾向于使用:
FMResultSet* results = [database executeQuery:@"SELECT * FROM tableName LIMIT 0"];
if([[results columnNameToIndexMap] containsObject:@"testColumn"])