1

私のアプリでは、sqliteデータベースを使用していますが、奇妙な問題が発生しました。

私はこのようなテーブルを持っています:

_id   field1   field2   status
---   ------   ------   ------
 1    value    value    ...
 2    value    value    ...
...

ある場所で、いくつかの行を更新して別のステータスに設定する必要があるので、試しています

SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("status", STATUS_SENT);
Set<Integer> ids = datasource.getCompletedIds();
String idparam = TextUtils.join(",", ids);
int cnt = db.update(TABLE_ORDERS, cv, "_id in (?)", new String[] { idparam });
Log.d("db", "updated " + cnt + " rows");
db.close();

ただし、何も更新されず、db.update0が返されます。何が欠けていますか?

4

2 に答える 2

5

パラメータを使用しないことをお勧めするのはうれしいことではありませんが、この場合、実際には、これらすべての?マーカーをフォーマットするよりも簡単です(そして、プレーンな整数でも同様に安全です)。

db.update(TABLE_ORDERS, cv, "_id IN (" + idparam + ")", null);
于 2013-02-07T19:02:45.480 に答える
1

残念ながら、セット内のIDごとに1つの挿入文字?をリストする必要があります...一般的な修正は、セットのサイズに基づいて 適切な数のsを追加するクイックユーティリティを作成することです。
?

于 2013-02-07T18:29:56.327 に答える