依赖SQLite pragma语句是否安全

时间:2014-05-07 22:09:03

标签: ios sqlite mobile

在与SQLite数据库连接时,我的iOS应用程序是否可以依赖特定的pragma语句的功能?

根据SQLite documentation

  

可能会删除特定的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语句的支持。

1 个答案:

答案 0 :(得分:1)

我更倾向于使用:

FMResultSet* results = [database executeQuery:@"SELECT * FROM tableName LIMIT 0"];
if([[results columnNameToIndexMap] containsObject:@"testColumn"])