記錄Android Room框架無法更新數(shù)據(jù)問題

今天在使用room框架的時候遇到一個嚴重的問題:無法更新數(shù)據(jù)!

正常使用room的人都知道,更新數(shù)據(jù)只要在自己的Dao目錄下寫好update方法,外部調(diào)用就可以了,例如:

@Dao

public interface UserDao {

? ? //增

? ? @Insert

? ? void insert(User... users);

? ? //刪

? ? @Query("DELETE FROM user")

? ? void deleteAll();

? ? //改

? ? @Update

? ? void update(User... users);

? ? //查全部

? ? @Query("SELECT * FROM user")

? ? List<User> getAllUsers();

}

這樣的例子網(wǎng)上一搜全都是,實體類一般也是如下這樣寫:

public class User {

@PrimaryKey(autoGenerate =true)//主鍵是否自動增長,默認為false

? ? private int id;

? ? private String uuid;

? ? private String name="";//名稱

? ? public String account ="";//賬號

}

設(shè)置一個int值的id,因為才開始使用room框架,都是參考的網(wǎng)上例子,因為需要一個string值的id也作為主鍵(當時沒有仔細看room文檔),但是默認又不支持string值作為主鍵,就一直感覺這個int值的id除了添加數(shù)據(jù)的時候會自動換行添加數(shù)據(jù)外,感覺沒什么用然后就坑了,activity里面寫update方法時,發(fā)現(xiàn)數(shù)據(jù)居然沒有變化!這可嚇到我了,要知道這時候如果room的框架不能用了,我這白忙活的幾天了,然后就找相關(guān)資料,最后發(fā)現(xiàn),是這個int值的id坑了我?。≡挷欢嗾f,修改一下以后,數(shù)據(jù)就可以更新了!,方法如下:

public class User {

@PrimaryKey(autoGenerate =true)//主鍵是否自動增長,默認為false

? ? private int id;

? ? private String uuid="";

? ? private String name="";//名稱

? ? public String account ="";//賬號

}

樓主是將int值的id刪除(用不到),然后設(shè)置uuid作為主鍵id:

@Entity(primaryKeys="uuid")

public class User {

@NonNull

? ? private String uuid="";

? ? private String name="";//名稱

? ? public String account ="";//賬號

}

ps:在uuid上方需要寫注解@NonNull,不然運行的時候會報錯!

好了,以上就是樓主初次使用room框架遇到的坑,希望對初學者能有寫幫助!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容