1

DBの値を1だけデクリメントする必要があるクエリがあります。 実際の質問と受け取った回答へのリンクは次のとおりです

update t
set num = num-1
where num > <val deleted>

上記は、データベース内の実際の数値を文字列「num-1」に更新しています。値をデクリメントし、値を文字列「num-1」に変更しないようにするにはどうすればよいですか。列のデータ型は整数です。

実際のクエリは次のとおりです。

ContentValues dataToInsert = new ContentValues();                          
dataToInsert.put(MARKER_ID, MARKER_ID+"-1");
String where = /*IMAGE_ID_F+" = " +imageId+ " AND "+*/MARKER_ID+" > "+markerId;
int resultUpdate = db.update(TABLE_DEFECTS, dataToInsert, where, null);
4

1 に答える 1

0

updateは、そのような計算を受け入れないように特別に設計された方法です。必要な正確な値を contentValues に入力する必要があります。

あなたの目的のために、あなたが必要ですrawQuery

db.rawQuery("update " + TABLE_DEFECTS + " set " + MARKER_ID + " = " + MARKER_ID + " -1 where " + MARKER_ID + " > ?", new String[] { String.valueOf(markerId) });
于 2013-01-02T09:36:56.900 に答える