Android Room: One database with multiple tables(Android房间:一库多表)
本文介绍了Android房间:一库多表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的应用程序有两个单独的表,一个称为用户,另一个称为密码。
用户:
@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();
我遇到的问题是,在全新安装后,当我访问密码时,我无法访问用户,反之亦然。
我收到以下错误:
原因:java.lang.IlLegalStateException:Room无法验证 数据完整性。看起来您更改了架构,但忘记了更新 版本号。您只需通过增加版本即可修复此问题 数字。
但当我尝试使用两个独立的数据库(如Password_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 {
...
}
这篇关于Android房间:一库多表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Android房间:一库多表
基础教程推荐
猜你喜欢
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01