This question already has answers here:
How to populate Android Room database table on first run?
                                
                                    (5个答案)
                                
                        
                                9个月前关闭。
            
                    
我正在Java中创建一个Android应用,该应用使用房间SQLite来存储数据。
该应用程序有两个表:


课程表
学生表


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

例如 :

数学-体育-艺术-音乐

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

最佳答案

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

07-25 21:31
查看更多