作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下代码用于更新数据库中的单行:
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;
}
这工作正常,但现在我想重构该方法,以便它接受一个 IncomingMessage 列表,而不是单个 IncomingMessage 参数。但是当我看到这个声明时:
db.update(TABLE_INCOMING_MESSAGES, values, KEY_ID + " = ?", new String[]{String.valueOf(incomingMessage.getId())});
我不确定如何修改它以便我可以在我的 WHERE 子句中指定多行(通过 KEY_ID)。我想做的是说类似 KEY_ID IN ( <multiple row IDs here> )
的话.这可能吗?
最佳答案
Is that possible?
是的,但是您需要一些 ?
等于 String[]
的长度。您可以使用字符串构建器来创建这样的 whereClause
。
例如
db.update(TABLE_INCOMING_MESSAGES, values, KEY_ID + " IN ( ?, ?, ?, ?)", new String[]{String.valueOf(incomingMessage.getId()), "id1", "id2", "id3"});
关于java - Android SQLiteDatabase 使用带有 IN 或 OR 的 where 子句更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746463/
我是一名优秀的程序员,十分优秀!