首次运行时如何预填充Room数据库?

时间:2019-04-18 07:15:26

标签: android sql android-room

我正在用Java创建一个Android应用,该应用使用房间SQLite来存储数据。 该应用程序有两个表:

  • 课程表
  • 学生表

我想为course_name实体添加默认值,以便在用户打开应用程序时找到课程。

例如:

数学-体育-艺术-音乐

@Entity
public class CoursesTable {
   @PrimaryKey(autoGenerate = true)
   int course_id;
   String course_name;
}

1 个答案:

答案 0 :(得分:3)

要在首次运行时/创建数据库后插入数据,可以使用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