我的情况
我使用协程和Room保存应用程序的用户个人资料数据。我具有CompleteProfileActivity:在该用户中填写他们的信息并确认(确认按钮)。我将它们发送到服务器并观察响应。如果响应成功。我将它们保存到我的ProfileDatabase中。
我的问题 如何得知我的数据库已更新或插入已完成,删除未通过获取大小来完成? @Insert @Delete是无效的返回方法。那么我怎么知道数据库的大小呢?
@Dao
interface ProfileDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveProfile(model:Profile)
@Query("SELECT * FROM profile_table")
fun getProfile():Deferred<Profile>
}
答案 0 :(得分:3)
如果方法调用成功插入,则说明操作成功,否则将引发异常。
此外,这些也不必是返回空隙的方法。
您可以让@Insert
返回表中主键的类型,该主键将成为新插入记录的键。
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveProfile(model: Profile): Int
对于@Delete
,如果返回Int
,它将返回删除的行数:
@Delete
fun deleteProfiles(profiles: List<Profile>): Int
使用@Query
进行更手动的实现同样,如果返回Int
,则返回受影响的行数:
@Query("DELETE FROM profiles")
fun deleteAllProfiles(): Int