【问题标题】: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

【讨论】:

    猜你喜欢
    • 2017-11-25
    • 2013-08-08
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2018-06-27
    相关资源
    最近更新 更多