请考虑以下情况。
我在应用程序商店中有一个iPhone应用程序,它在16列SQLite3表上执行查询。作为更新,我想在此表中添加一个新列。
当有人安装更新时,它会搞砸吗?桌子会被更换吗?这是如何运作的。我该怎么办呢?
答案 0 :(得分:4)
一种方法是在发布时检查表是否有新字段。您可以使用以下SQLite命令从表中检索所有字段
PRAGMA table_info(table-name);
如果您要查找的字段不在结果集中,请执行ALTER TABLE table-name ADD COLUMN column-name column-type
更新您的表格。
您可以使用此方法遍历表格的字段
- (BOOL)getFields
{
const char *sql = "PRAGMA table_info(myTable)";
sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) != SQLITE_OK)
{
return NO;
}
while(sqlite3_step(stmt) == SQLITE_ROW)
{
NSString *fieldName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(stmt, 1)];
NSLog(@"%@", fieldName);
}
return YES;
}
希望这有帮助
答案 1 :(得分:1)
仅供参考,如果您从未复制过数据库以使其可编辑,则会被替换。如果您将数据库复制到可写的位置,那么您必须自己处理替换。