我有db表如下
我想将状态列更新为1,ID = 1,2,3。
对于单行,我可以使用内容值
进行更新public void updateJobStatus(int callId) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues data = new ContentValues();
data.put(AppDBConstants.KEY_JOB_DETAIL_STATUS, 1);
db.update(AppDBConstants.TABLE_JOB_DETAIL, data, AppDBConstants.KEY_JOB_DETAIL_CALL_ID + "=" + callId, null);
db.close();
}
如何处理多行?
答案 0 :(得分:4)
像这样更新您的查询
db.update(AppDBConstants.TABLE_JOB_DETAIL, data, AppDBConstants.KEY_JOB_DETAIL_CALL_ID + " IN (?,?,?)", new String[]{"1","2","3"});
答案 1 :(得分:2)
当你有不明数量的参数时,试试这个
String args = TextUtils.join(", ", arrayOfIds);
db.execSQL(String.format("UPDATE %s SET %s = true WHERE %s IN (%s);",
TABLE_INCOMING_MESSAGES, KEY_MESSAGE_SENT, KEY_ID, args));
答案 2 :(得分:1)
我认为您当前的代码适用于多个ID,但需要进行一些更改,以达到您的要求:
public void updateJobStatus(int[] callIds) {
SQLiteDatabase db = this.getWritableDatabase();
if (db != null) {
db.beginTransaction();
try {
for(int id : callIds){
ContentValues data = new ContentValues();
data.put(AppDBConstants.KEY_JOB_DETAIL_STATUS, 1);
db.update(AppDBConstants.TABLE_JOB_DETAIL, data, AppDBConstants.KEY_JOB_DETAIL_CALL_ID + "=" + id, null);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
db.close();
}
}
注意:如上所述,您需要传递id数组,它可能是一个或多个。