gpt4 book ai didi

java - Android SQLiteDatabase 使用带有 IN 或 OR 的 where 子句更新多行

转载 作者:太空狗 更新时间:2023-10-29 16:14:38 24 4
gpt4 key购买 nike

我有以下代码用于更新数据库中的单行:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com