gpt4 book ai didi

android - Room 在哪里保存数据库 Android?

转载 作者:可可西里 更新时间:2023-11-01 18:59:58 25 4
gpt4 key购买 nike

我正在使用 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;
}


}

最佳答案

static final String DATABASE_NAME = "photex_db";

在这里,您正在尝试打开 photoex_db

String currentDBPath=getDatabasePath("photex_db.db").getAbsolutePath();

在这里,您正在尝试从 photex_db.db 中读取数据。

这些不一样。

您可能会考虑始终如一地使用 DATABASE_NAME,而不是只在某些地方使用。

关于android - Room 在哪里保存数据库 Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44986465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com