我试图备份我的数据库文件到存储目录。但只要我点击保存按钮的应用程序崩溃。说它不能打开数据库。
这是DB助手类。
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();
}
我已经在清单文件中给出了所有权限,所以这不是问题。
Logcat错误
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)
1条答案
按热度按时间jgovgodb1#
**
/storage/emulated/0/Documentsmnt/sdcard/documents
**真的应该存在吗?它不应该是**
/storage/emulated/0/documents
**,即您可能无意中连接了mnt/sdcard/documents