Room数据库作为Android开发的利器,本文将详细介绍其使用流程,包括类创建、数据库操作等关键步骤。
1、Room类创建与更新语法
public class XxxRoom {
private static final String TAG = "TAG";
private static volatile XxxRoom instance = null;
private static final String DB_NAME = "xxx_db";
private XxxDataBase mXxxDatabase;
private Context applicationContext;
//版本更新
public static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE LastSong ADD COLUMN biz_id integer NOT NULL DEFAULT 0");
}
};
public static final Migration MIGRATION_3_4 = new Migration(3, 4) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE LastSong ADD COLUMN biz_topic text");
}
}; public static XxxRoom getInstance() {
XxxRoom result = instance;
if (result == null) {
synchronized (XxxRoom .class) {
result = instance;
if (result == null) {
instance = result = new XxxRoom();
}
}
}
return result;
} public void init(Context context) {
try {
applicationContext = context.getApplicationContext();
mXxxDatabase = Room.databaseBuilder(applicationContext, XxxDataBase.class, DB_NAME)
.allowMainThreadQueries()
.fallbackToDestructiveMigration()//数据库更新时删除数据重新创建
.addMigrations(MIGRATION_1_2)
.addMigrations(MIGRATION_3_4)
.build();
} catch (Exception exception) {
DLog.e(TAG, "日志输出------>exception:" + exception);
}
} public XxxDataBase getXxxDatabase() {
return mXxxDatabase;
}
public Context getApplicationContext() {
return applicationContext;
}
}
2、RoomDatabase类实现
@Database(entities = {SongProcess.class, LastSong.class, AlbumSong.class,
LocalSongProcess.class, LocalLastSong.class, LocalAlbumSong.class}, version = 5)
public abstract class XxxDataBase extends RoomDatabase { public abstract SongProcessDao getSongProcessDao(); public abstract LastSongDao getLastSongDao(); public abstract