简体   繁体   English

无法在存储目录中备份我的数据库文件。 使用房间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM