0

我正在使用这种方法来更新我的数据库中的一行:

- (void)Update: (int)idMed {    
    fileMgr = [NSFileManager defaultManager];
    sqlite3_stmt *stmt=nil;
    sqlite3 *dbase;
    NSString *database = [self.GetDocumentDirectory stringByAppendingPathComponent:@"rtDb.sqlite"];
    sqlite3_open([database UTF8String], &dbase);
    const char *sql = "UPDATE orari SET pr=1 WHERE dataid=?";
    sqlite3_prepare_v2(dbase, sql, -1, &stmt, NULL);
    sqlite3_bind_int(stmt, 1, idMed);
    sqlite3_step(stmt);
    sqlite3_finalize(stmt);
    sqlite3_close(dbase);
}

我已经三重检查了发送到这个方法的数据,idMed 是正确的,如果我在我的 SQLite 管理器中使用查询,它就可以工作。实际上这种方法也有效,但只是几次。大多数时候它什么都不做。

在另一种方法中使用了相同的确切代码,该方法生成了一个 SELECT,然后是这个相同的 UPDATE 并且它在那里工作,这里不是。

更新:似乎我收到了 STEP 和 FINALIZE 行的错误。

4

1 回答 1

0

好的,我发现了问题。我正在另一个线程中读取同一个数据库的另一个表,这以某种方式阻止了这个更新方法。我确信我已经从我的代码中删除了我的数据库上的所有后台操作,但是这个操作逃脱了我的检查。

顺便说一句,我仍然在 STEP 行上遇到错误,但它仍然可以正常工作。

于 2013-10-22T11:02:13.230 回答