2

以下のように、テーブル内の単一の行を更新するメソッドがあります。時々、いくつかの行が update メソッドから行数 1 を返しますが、値は更新されません。これが行に対して発生すると、常に同じように動作します。他の行は問題なく更新されます。

public void SetImageStatusToCompleted(String imageId)
   {
       String where = "id=?";
        String[] whereArgs = new String[] {String.valueOf(imageId)};
        ContentValues args = new ContentValues();
        args.put("status", 0);
        int success;
        try 
        {  
            db.beginTransaction();
            success = db.update("images", args, where, whereArgs);
            db.setTransactionSuccessful();
        } 
        finally 
        {
            db.endTransaction();
        }
    }

私はそれを理解することができません。例外はありません。私が示したように、成功の値は常に 1 であり、1 行が更新されたことを示します。

ありがとう!

4

2 に答える 2

0

問題が見つかりました。私のテーブル作成ステートメントでは、_id フィールドの定義で AUTOINCREMENT を見逃していました。_id フィールドの選択カーソルから値がどのように返されたか正確にはわかりませんが、更新しようとしていた行に対応していませんでした。

AUTOINCREMENT を追加すると、問題が修正されました。

ありがとう!

于 2013-06-28T12:45:21.003 に答える