這是我第一次嘗試使用 Room 數(shù)據(jù)庫,我想用 20 個用戶對象預(yù)填充數(shù)據(jù)庫。但是我使用的代碼每次運行時都會向現(xiàn)有列表中添加 20 個用戶。我如何防止它這樣做?@Database(entities = {User.class}, version = 1)public abstract class AppDatabase extends RoomDatabase {private static AppDatabase INSTANCE;public abstract DataExchange dataExchange();public static AppDatabase getAppDatabase(final Context context){ if (INSTANCE == null){ INSTANCE = Room.databaseBuilder(context, AppDatabase.class, "User_Database") .addCallback(new Callback() { @Override public void onCreate(@NonNull final SupportSQLiteDatabase db) { super.onCreate(db); Executors.newSingleThreadScheduledExecutor().execute(new Runnable() { @Override public void run() { getAppDatabase(context).dataExchange().insert(User.populate()); } }); } }) .build(); } return INSTANCE;}public static void destroyInstance(){ INSTANCE = null;}這是用戶類:@Entity(tableName = "user_table")public class User{public User(String name){ setName(name);}@PrimaryKey(autoGenerate = true)private int uid;@ColumnInfo(name = "Username")private String name;public String getName() { return name;}public void setUid(int uid) { this.uid = uid;}public void setName(String name) { this.name = name;}public static User[] populate(){ User[] ar = new User[20]; for(int i=0; i<20;i++){ ar[i] = new User("USER "+(i+1)); } return ar;}}另外,我從中獲取代碼的地方在 run() 中有一個 getInstance(context) 而不是 getAppDatabase(context)。我更改了它,因為在我不知道的 5 個庫中找到了 getInstance。
添加回答
舉報
0/150
提交
取消