在iPhone上的SQLite3中截断表?

时间:2010-12-22 05:43:42

标签: iphone objective-c xcode sqlite

我想彻底清理iPhone应用程序中SQLite3表中的所有内容。我的MySQL经验告诉我,我应该使用TRUNCATE。但似乎SQLite3不支持TRUNCATE(至少我在使用句子 TRUNCATE my_table_Name 时准备语句时出错。)

所以我转向 DELETE FROM 。两个问题:1)DELETE FROM彻底清理我的桌子吗? 2)我尝试了以下代码并且它有效。但我高度怀疑其中有不必要甚至错误的代码。任何人都可以帮我看一下吗?

提前致谢。

-(void)deleteAllUser {
    NSString *ns_sql = [NSString stringWithFormat:@"DELETE FROM %@", [Config USER_TABLE_NAME]];
    const char *sql = [ns_sql cStringUsingEncoding:NSUTF8StringEncoding];
    sqlite3_stmt *statement = nil;

    sqlite3* db = ...; //get the database instance

    if(sqlite3_prepare_v2(db, sql, -1, &statement, nil) != SQLITE_OK) {
        return;
    }

    //Without this line, table is not modified
    int code = sqlite3_step(statement);

    if (code == SQLITE_ROW) {
        //Do nothing here...
    }

    sqlite3_finalize(statement);
}

1 个答案:

答案 0 :(得分:1)

我认为

if(code == SQLITE_ROW){         //在这里什么都不做     }

此代码应该像

if(code == SQLITE_DONE){         //在这里什么都不做     }

如果你想获得任何消息,那么你可以从这里返回YES,而从else返回NO(如果你从void中将返回类型改为BOOL)。这可以帮助你显示消息。