gpt4 book ai didi

android - room db 使用@query 更新多行

转载 作者:行者123 更新时间:2023-12-02 13:03:14 27 4
gpt4 key购买 nike

我想更新房间数据库中的多行。但我没有对象 - 我只有 ID。

如果我更新一行,我会在我的 DAO 中写下这样的内容:

@Query("UPDATE items SET place = :new_place WHERE id = :id;")
fun updateItemPlace(id:Int, new_place:String)

对于多行,我需要这样的东西:
@Query("UPDATE items SET place = :new_place WHERE id = :ids;")
fun updateItemPlaces(ids:List<Int>, new_place:String)

或者
@Query("UPDATE items SET place = :new_place WHERE id IN :ids;")
fun updateItemPlaces(ids:String, new_place:String)

我在我的 ids-String 中写了类似 '(1,4,7,15)' 的东西

有人可以告诉我进行此类更新的好方法吗

因为像
val ids = ListOf(1,4,7,15)
ids.forEach{
itemDao.updateItemPlace(it,'new place')
}

似乎不是一个好的解决方案

最佳答案

@Query("UPDATE items SET place = :new_place WHERE id IN (:ids)")
fun updateItemPlaces(ids:List<Int>, new_place:String)

但请记住,如果您的 id 列表包含超过 999 个项目,SQLite 将抛出异常:
SQLiteException too many SQL variables (Sqlite code 1)

关于android - room db 使用@query 更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53630852/

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