Я использую библиотеку Room для сохранения данных в базе данных. Я хочу получить базу данных.
использовал этот код
private void copyFile() {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath=getDatabasePath("photex_db.db").getAbsolutePath();
String backupDBPath = "photex_db.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
он работает в простом sqlLite, но не работал с библиотекой ROOM ROOM а>
есть ли способ получить базу данных?
Класс для создания базы данных с помощью Room
@Database(entities = {ProjectDataEntity.class, SavedProjectEntity.class},
version = 2)
@TypeConverters(DateConverter.class)
public abstract class AppDatabase extends RoomDatabase {
static final String DATABASE_NAME = "photex_db";
private static AppDatabase Instance;
public abstract ProjectDataDao projectDataDao();
public abstract SavedProjectDao savedProjectDao();
public static AppDatabase getInstance(Context context) {
if (Instance == null) {
synchronized (AppDatabase.class) {
if (Instance == null) {
Instance =
Room.databaseBuilder(context.getApplicationContext(),
AppDatabase.class, DATABASE_NAME)
.build();
}
}
}
return Instance;
}
}
getDatabasePath()
, пожалуйста. не работал с библиотекой ROOM - если вы используетеgetDatabasePath()
, он должен работать с Room. Если у вас возникнут проблемы, предоставьте минимальный воспроизводимый пример, который будет включатьRoomDatabase
, где вы предоставляете информацию в Room о том, какую базу данных использовать. - person CommonsWare   schedule 08.07.2017RoomDatabase
, в котором вы предоставляете информацию В комнату о том, какую базу данных использовать. - person CommonsWare   schedule 10.07.2017