我的应用程序有两个单独的表,一个称为用户,另一个称为密码。
用户:
@Entity(tableName = "users")
public class Users {
// some setters and getters here
}
密码:
@Entity(tableName = "passwords")
public class Passwords {
// some setters and getters here
}
这就是我访问数据库的方式:
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();
我遇到的问题是,全新安装后,当我访问密码时,我无法访问用户,反之亦然。
我收到以下错误:
Caused by: java.lang.IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number.
但是当我尝试拥有两个独立的数据库(例如passwords_db和users_db)而不是mymaindb时,它工作得很好。
那么有没有一种方法可以在一个数据库下拥有多个表?如果是这样,那我做错了什么?提前致谢!
最佳答案
我认为您完全错了,Room.databaseBuilder
应该只调用一次来设置数据库,并且在该数据库类中,您将构造多个表。例如:
Room.databaseBuilder(this, MyRoomDb.class, "mymaindb")
.allowMainThreadQueries()
.build()
你的MyRoomDb
应该看起来像这样
@Database(
entities = {
Users.class,
Passwords.class
},
version = VERSION
)
public abstract class MyRoomDb extends RoomDatabase {
...
}
关于java - 安卓房间: One database with multiple tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57473172/