bmt*_*033 2 java sqlite android
我有以下代码用于更新数据库中的一行:
public int updateSentFieldForIncomingMessage(IncomingMessage incomingMessage)
{
SQLiteDatabase db;
int numberOfRowsAffected;
try
{
db = super.getWritableDatabase();
}
catch (SQLiteException e)
{
File dbFile = context.getDatabasePath(DATABASE_NAME);
db = SQLiteDatabase.openDatabase(dbFile.getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS);
}
try
{
ContentValues values = new ContentValues();
values.put(KEY_MESSAGE_SENT, true);
numberOfRowsAffected = db.update(TABLE_INCOMING_MESSAGES, values, KEY_ID + " = ?", new String[]{String.valueOf(incomingMessage.getId())});
}
finally
{
db.close();
}
return numberOfRowsAffected;
}
Run Code Online (Sandbox Code Playgroud)
这可以正常工作,但现在我想重构该方法,以便它接受一个IncomingMessage列表,而不是单个IncomingMessage参数。但是当我得到以下陈述时:
db.update(TABLE_INCOMING_MESSAGES, values, KEY_ID + " = ?", new String[]{String.valueOf(incomingMessage.getId())});
Run Code Online (Sandbox Code Playgroud)
我不确定如何修改它,以便可以在WHERE子句中指定多个行(通过KEY_ID)。我想做的是说些类似的话KEY_ID IN ( <multiple row IDs here> )。那可能吗?
那可能吗?
是的,但您需要?等于的长度String[]。您可以使用“字符串”构建器来创建此类whereClause。
例如
db.update(TABLE_INCOMING_MESSAGES, values, KEY_ID + " IN ( ?, ?, ?, ?)", new String[]{String.valueOf(incomingMessage.getId()), "id1", "id2", "id3"});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1470 次 |
| 最近记录: |