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.update返回 0。我错过了什么?

4

2 回答 2

5

我不乐意推荐使用参数,但在这种情况下,它实际上比格式化所有这些?标记更容易(并且使用纯整数,同样安全):

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

不幸的是,您必须为 Set 中的每个id列出一个插入字符... 一种流行的解决方法是编写一个快速实用程序来根据 Set 的大小添加适当数量的 s。?
?

于 2013-02-07T18:29:56.327 回答