Android 如何使用Room检测更新sql查询是否成功?

Android 如何使用Room检测更新sql查询是否成功?,android,kotlin,android-room,Android,Kotlin,Android Room,我正在使用Room,我有一种方法将一行更新到数据库中: @Query("UPDATE packs SET is_opened = 1 WHERE pack_id IN (:packId)") fun unlockPack(packId: Int) 我从存储库中调用它: override fun unlockOnePackById(packID: Int) { db.packDaoAccess().unlockPack(packID) } 它从presener调用,然后

我正在使用Room,我有一种方法将一行更新到数据库中:

@Query("UPDATE packs SET is_opened = 1 WHERE pack_id IN (:packId)")
fun unlockPack(packId: Int)
我从存储库中调用它:

override fun unlockOnePackById(packID: Int) {
        db.packDaoAccess().unlockPack(packID)
    }
它从presener调用,然后结果进入活动。当我使用GET或其他sql查询时,我得到了
可观察的结果:

@Query("SELECT * FROM packs")
fun allFullPacks(): Observable<List<AnimalPackFull>>
@Query(“从包中选择*)
fun allFullPacks():可观察

但据我所知,
UPDATE
不返回任何内容。我怎样才能检测到,我的
更新
查询是否正确完成?我需要它向用户显示弹出窗口。

如果您调整查询,使其具有类似于这样的Int的返回值

@Query("UPDATE packs SET is_opened = 1 WHERE pack_id IN (:packId)")
fun unlockPack(packId: Int) : Int
它应该返回受更新查询影响的行数。
删除查询也一样

如果它没有引发异常,则您的
@Query
已正确完成。好的,但如果我只想在
更新
完成时执行smth,该怎么办?如何从查询中获取回调?您的
unlockPack()
调用是同步的。那么,在下一个Kotlin声明中做下一点工作。