【问题标题】:How to pre-populate Room database at first run? [duplicate]如何在首次运行时预填充 Room 数据库? [复制]
【发布时间】:2019-09-08 11:44:55
【问题描述】:
我正在使用房间 SQLite 存储数据的 java 中创建一个 android 应用程序。
该应用程序有两个表:
我想为course_name 实体添加默认值,以便在用户打开应用程序时找到课程。
例如:
数学 - 运动 - 艺术 - 音乐
@Entity
public class CoursesTable {
@PrimaryKey(autoGenerate = true)
int course_id;
String course_name;
}
【问题讨论】:
标签:
android
sql
android-room
【解决方案1】:
要在第一次运行/创建数据库后插入数据,您可以使用RoomDatabase.Callback。
您可以在创建数据库后运行脚本或每次运行
使用 RoomDatabase.Callback 打开数据库,这个类是
在最新版本的 Room 库中可用。
你需要实现 onCreate 和 onOpen 方法
RoomDatabase.Callback 并将其添加到 RoomDatabase.Builder,如图所示
下面。
yourDatabase = Room.databaseBuilder(context, YourDatabase.class, "your db")
.addCallback(rdc)
.build();
RoomDatabase.Callback rdc = new RoomDatabase.Callback() {
public void onCreate (SupportSQLiteDatabase db) {
// ADD YOUR "Math - Sport - Art - Music" here
}
public void onOpen (SupportSQLiteDatabase db) {
// do something every time database is open
}
};
一个完整的例子可以找到here和回调的详细信息here
Reference