sqlite 无法备份存储目录中的数据库文件,正在使用空间

ht4b089n  于 2023-01-31  发布在  SQLite
关注(0)|答案(1)|浏览(166)

我试图备份我的数据库文件到存储目录。但只要我点击保存按钮的应用程序崩溃。说它不能打开数据库。
这是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)
jgovgodb

jgovgodb1#

**/storage/emulated/0/Documentsmnt/sdcard/documents**真的应该存在吗?

它不应该是**/storage/emulated/0/documents**,即您可能无意中连接了mnt/sdcard/documents

相关问题