Twi*_*aby 9 sqlite android android-room
我想在 Android Room byDELETE FROM...WHERE...IN (...)子句中按 ID 删除多行。下面是代码:
项目道
@Dao
interface ItemDao {
@Query("DELETE FROM Item WHERE id IN (:ids)")
fun deleteItemByIds(ids: String)
}
Run Code Online (Sandbox Code Playgroud)
项目视图模型
class ItemViewModel(application: Application) : AndroidViewModel(application) {
fun deleteByIds(ids: String) {
mScope.launch(Dispatchers.IO) {
mItemDao.deleteItemByIds(ids)
}
}
}
Run Code Online (Sandbox Code Playgroud)
项目活动
fun onDelete(){
// these are not real IDs, just for demo
val itemIdList = arrayListOf<Long>(1, 2, 3)
val ids = itemIdList.toString().drop(1).dropLast(1) // ids = "1, 2, 3"
itemViewModel.deleteByIds(ids)
}
Run Code Online (Sandbox Code Playgroud)
当只有一个 ID 时,代码有效。但是当有多个 ID 时,它不会。那么这里发生了什么?谢谢你的帮助。
Sdg*_*emi 18
处理WHERE IN子句时需要传递数组或列表。喜欢:
@Dao
interface ItemDao {
@Query("DELETE FROM Item WHERE id IN (:ids)")
fun deleteItemByIds(ids: Array<Long>)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3960 次 |
| 最近记录: |