运行iOS SQLite更新

时间:2013-08-11 13:34:33

标签: ios sqlite

我正在使用它在测试iOS App中执行Update语句,日志输出'Success'但数据库中没有变化。有人能指出我正确的方向吗?非常感谢。

我是新手,所以请原谅我可能令人震惊的代码。

@try {
    NSFileManager *fileMgr = [NSFileManager defaultManager];
    NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"chars.sqlite3"];
    BOOL success = [fileMgr fileExistsAtPath:dbPath];
    if(!success)
    {
        NSLog(@"Cannot locate database file '%@'.", dbPath);
    }
    if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK))
    {
        NSLog(@"An error has occured: %s", sqlite3_errmsg(db));

    }
    const char *sql = "UPDATE characters SET level = 'testing' WHERE id='1'";
    sqlite3_stmt *sqlStatement;
    if(sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK)
    {
        NSLog(@"Problem with prepare statement:  %s", sqlite3_errmsg(db));
    }else{
        if (sqlite3_step(sqlStatement) == SQLITE_DONE){
            NSLog(@"Success");
        }
    }
    sqlite3_finalize(sqlStatement);
}
@catch (NSException *exception) {
    NSLog(@"Problem with prepare statement:  %s", sqlite3_errmsg(db));
}
@finally {
    sqlite3_close(db);
}

1 个答案:

答案 0 :(得分:4)

问题是您要从捆绑包中打开数据库,该捆绑包是只读的。你应该

  1. 检查Documents文件夹中是否存在数据库。

  2. 如果没有,请将数据库从捆绑包复制到Documents文件夹。

  3. 现在,从Documents文件夹中打开数据库。