更新
您可以通过 3 种方式做到这一点:important check this for migration details
1- 从导出的资产架构填充您的数据库
Room.databaseBuilder(appContext, AppDatabase.class, "Sample.db")
.createFromAsset("database/myapp.db")
.build();
2- 从文件中填充数据库
Room.databaseBuilder(appContext, AppDatabase.class, "Sample.db")
.createFromFile(new File("mypath"))
.build();
3- 您可以在创建数据库后运行脚本,也可以在每次使用RoomDatabase.Callback 打开数据库时运行脚本,该类在最新版本的 Room 库中可用。
你需要实现RoomDatabase.Callback的onCreate和onOpen方法,并添加到RoomDatabase.Builder,如下所示。
yourDatabase = Room.databaseBuilder(context, YourDatabase.class, "your db")
.addCallback(rdc)
.build();
RoomDatabase.Callback rdc = new RoomDatabase.Callback() {
public void onCreate (SupportSQLiteDatabase db) {
// do something after database has been created
}
public void onOpen (SupportSQLiteDatabase db) {
// do something every time database is open
}
};
Reference
您可以在 RoomDatabase.Callback 方法中使用 Room DAO 本身来填充数据库。完整示例见Pagination and Room example
RoomDatabase.Callback dbCallback = new RoomDatabase.Callback() {
public void onCreate(SupportSQLiteDatabase db) {
Executors.newSingleThreadScheduledExecutor().execute(new Runnable() {
@Override
public void run() {
getYourDB(ctx).yourDAO().insertData(yourDataList);
}
});
}
};