[英]Unable to Backup my database file in Storage directory. Using Room
I am trying to back up my database file in to the storage directory.我正在尝试将我的数据库文件备份到存储目录中。 But as soon as I click the save button the application crashes.
但是,一旦我单击保存按钮,应用程序就会崩溃。 Saying it cannot open the database.
说它打不开数据库。
This the DB helper class.这是数据库助手 class。
public abstract class DBHelper extends RoomDatabase {
private static final String DB_NAME = "MyDatabase";
private static String DB_PATH = "/storage/emulated/0/documents/Expenses.db";
private static DBHelper instance;
// public static final String DB_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) + "/appName/database/" ;
public static synchronized DBHelper getDB(Context context) {
if (instance == null) {
instance = Room.databaseBuilder(context, DBHelper.class, DB_PATH + DB_NAME)
.fallbackToDestructiveMigration()
.allowMainThreadQueries()
.setJournalMode(JournalMode.TRUNCATE)
.build();
}
return instance;
}
public abstract ExpenseDao expenseDao();
}
I have given all the permissions in the manifest files.我已经在清单文件中授予了所有权限。 So that is not an issue.
所以这不是问题。
Logcat error日志错误
2023-01-30 12:11:17.972 10418-10418/com.example.roomlibrary E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.roomlibrary, PID: 10418
android.database.sqlite.SQLiteCantOpenDatabaseException: Cannot open database '/storage/emulated/0/Documentsmnt/sdcard/documents/expenses.dbMyDatabase': Directory /storage/emulated/0/Documentsmnt/sdcard/documents doesn't exist
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:254)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:205)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:505)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:206)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:198)
Is /storage/emulated/0/Documentsmnt/sdcard/documents
really expected to exist? /storage/emulated/0/Documentsmnt/sdcard/documents
真的应该存在吗?
Should it not be /storage/emulated/0/documents
ie it appears that you may be inadvertently concatenating mnt/sdcard/documents
它不应该是
/storage/emulated/0/documents
即看起来你可能无意中连接了mnt/sdcard/documents
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.