我怎么知道Room的@Insert完成了?
How can I know @Insert of Room is completed?
My scenario
我使用协程和 Room 来保存我的应用程序的用户配置文件数据。我有 CompleteProfileActivity:在该用户中填写他们的信息并确认(确认按钮)。我将它们发送到服务器并观察响应。如果响应成功。我将它们保存到我的 ProfileDatabase 中。
My question
How can I know my database is updated or my insertion is complete, my deletion is completed not by getting the size? @Insert @Delete is void return methods. So how can I know except the database size?
@Dao
interface ProfileDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveProfile(model:Profile)
@Query("SELECT * FROM profile_table")
fun getProfile():Deferred<Profile>
}
如果插入方法调用成功,则说明成功,否则会抛出异常。
此外,这些方法不必是无效的returning 方法。
你可以在table中有@Insert
return主键的类型,这将是新插入记录的键。
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveProfile(model: Profile): Int
在 @Delete
的情况下,如果您 return 一个 Int
:
,它将 return 删除的行数
@Delete
fun deleteProfiles(profiles: List<Profile>): Int
同样适用于使用 @Query
的更多手动实施,如果您 return 和 Int
:
,returns 受影响的行数
@Query("DELETE FROM profiles")
fun deleteAllProfiles(): Int
My scenario
我使用协程和 Room 来保存我的应用程序的用户配置文件数据。我有 CompleteProfileActivity:在该用户中填写他们的信息并确认(确认按钮)。我将它们发送到服务器并观察响应。如果响应成功。我将它们保存到我的 ProfileDatabase 中。
My question How can I know my database is updated or my insertion is complete, my deletion is completed not by getting the size? @Insert @Delete is void return methods. So how can I know except the database size?
@Dao
interface ProfileDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveProfile(model:Profile)
@Query("SELECT * FROM profile_table")
fun getProfile():Deferred<Profile>
}
如果插入方法调用成功,则说明成功,否则会抛出异常。
此外,这些方法不必是无效的returning 方法。
你可以在table中有@Insert
return主键的类型,这将是新插入记录的键。
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveProfile(model: Profile): Int
在 @Delete
的情况下,如果您 return 一个 Int
:
@Delete
fun deleteProfiles(profiles: List<Profile>): Int
同样适用于使用 @Query
的更多手动实施,如果您 return 和 Int
:
@Query("DELETE FROM profiles")
fun deleteAllProfiles(): Int