本文介紹了Android房間:一庫多表的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我的應用程序有兩個單獨的表,一個稱為用戶,另一個稱為密碼。
用戶:
@Entity(tableName = "users")
public class Users {
// some setters and getters here
}
密碼:
@Entity(tableName = "passwords")
public class Passwords {
// some setters and getters here
}
這就是我訪問數(shù)據(jù)庫的方式:
usersdb = Room.databaseBuilder(this, Users.class,"mymaindb")
.allowMainThreadQueries()
.build();
// Then later in some other activity when I need to use passwords table
passwords = Room.databaseBuilder(this, passwords.class,"mymaindb")
.allowMainThreadQueries()
.build();
我遇到的問題是,在全新安裝后,當我訪問密碼時,我無法訪問用戶,反之亦然。
我收到以下錯誤:
原因:java.lang.IlLegalStateException:Room無法驗證
數(shù)據(jù)完整性。看起來您更改了架構(gòu),但忘記了更新
版本號。您只需通過增加版本即可修復此問題
數(shù)字。
但當我嘗試使用兩個獨立的數(shù)據(jù)庫(如Password_db和USERS_db)而不是mymaindb時,它完全可以正常工作。
那么,有沒有一種方法可以讓一個數(shù)據(jù)庫下有多個表呢?如果是這樣的話,我到底做錯了什么?提前感謝!
推薦答案
我認為您完全搞錯了,Room.databaseBuilder
應該只調(diào)用一次來設置數(shù)據(jù)庫,并且在該數(shù)據(jù)庫類中,您將構(gòu)造多個表。例如:
Room.databaseBuilder(this, MyRoomDb.class, "mymaindb")
.allowMainThreadQueries()
.build()
和您的MyRoomDb
應如下所示
@Database(
entities = {
Users.class,
Passwords.class
},
version = VERSION
)
public abstract class MyRoomDb extends RoomDatabase {
...
}
這篇關(guān)于Android房間:一庫多表的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,