使用Android中的Room同步从表中删除数据

时间:2019-01-15 11:54:02

标签: android android-room

我需要同步删除表中的所有数据,然后插入新数据。

根据文档@Query异步运行,因此以下方法尚未完成删除数据的操作,因此我们开始在下一行中插入数据,这会导致崩溃。

@Query("DELETE FROM myTable") void deleteAll();

有什么办法可以同步删除它?我们应该将使用Query注释的方法的返回类型从void更改为int还是应该使用RoomDatabase.clearAllTables()方法。 不确定void clearAllTables()是否也同步运行。

2 个答案:

答案 0 :(得分:0)

在2号会议室中,您可以运行异步查询,并以删除的项目作为结果。在那之后插入项目。

答案 1 :(得分:0)

如果您致电给dao

someDao.deleteAll()
someDao.insert(someObj)

您没有任何保证在开始插入命令之前deleteAll将完成。 为了使它在链中,只需为deleteAll()添加dao返回参数

@Query("DELETE FROM table")
fun deleteAll(): Int

现在,Room / SQLite将完成删除调用,以向您返回值。