关于SQLite3和更新iPhone应用程序的问题

时间:2011-06-29 19:19:28

标签: iphone ios sqlite

请考虑以下情况。

我在应用程序商店中有一个iPhone应用程序,它在16列SQLite3表上执行查询。作为更新,我想在此表中添加一个新列。

当有人安装更新时,它会搞砸吗?桌子会被更换吗?这是如何运作的。我该怎么办呢?

2 个答案:

答案 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)

仅供参考,如果您从未复制过数据库以使其可编辑,则会被替换。如果您将数据库复制到可写的位置,那么您必须自己处理替换。