亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

即使從服務器中刪除后,數據仍顯示在房間數據庫中

即使從服務器中刪除后,數據仍顯示在房間數據庫中

嗶嗶one 2023-04-26 16:53:31
我正在從服務器獲取數據并保存在房間數據庫中,然后從房間中將其顯示在回收站視圖中。數據完美地保存在房間數據庫中并顯示在回收站視圖中。問題:當我從服務器數據庫中刪除一些數據時,之前保存的舊副本仍然存在于房間中。我想要什么:我不想在回收者視圖中顯示從服務器刪除的數據。那么如何根據服務器響應更新房間數據庫。這是我到目前為止所做的:UserDao.java@Daopublic interface UserDao {@Insert(onConflict = OnConflictStrategy.REPLACE)void Insert(User... users);@Query("SELECT * FROM Users")LiveData<List<User>> getRoomUsers();}User.java@Entity(tableName = "Users")public class User {@NonNull@PrimaryKeyprivate String id;@ColumnInfo(name = "name")@SerializedName("name")@Exposeprivate String name;@ColumnInfo(name = "age")@SerializedName("age")@Exposeprivate String age;public User(String id,String name, String age) {   this.id = id;   this.name = name;   this.age = age;}public String getId() {   return id;}public void setId(String id) {   this.id = id;}public String getName() {    return name;}public void setName(String name) {   this.name = name;}public String getAge() {   return age;}public void setAge(String age) {   this.age = age;}}
查看完整描述

1 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

您可以在插入新數據之前刪除表以實現它使用下面的代碼:


@Dao

public abstract UserDao {


 @Insert(onConflict = OnConflictStrategy.REPLACE)

 abstract void Insert(User... users);


 @Query("SELECT * FROM Users")

 abstract LiveData<List<User>> getRoomUsers();


 @Insert(onConflict = OnConflictStrategy.IGNORE)

 abstract void insert( List<Users> list);


 @Query("DELETE FROM Users")

 abstract void deleteAll();


 @Transaction

 void deleteAndInsert(List<Users> list){

   deleteAll();

   insert(list);

 }


}

現在您可以使用userDb.deleteAndInsert(list)方法 after List<User> list = response.body(); 與服務器同步數據。


查看完整回答
反對 回復 2023-04-26
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號