0

このメソッドを使用して、DB の行を更新しています。

- (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

問題が見つかりました。私は別のスレッドで同じ DB の別のテーブルを読んでいましたが、それがどういうわけかこの更新メソッドをブロックしていました。DB のすべてのバックグラウンド操作をコードから既に削除したと確信していましたが、これは私のチェックを逃れました。

ところで、まだ STEP 行でエラーが発生していますが、とにかく動作しています。

于 2013-10-22T11:02:13.230 に答える