使用 Room 打开具有指定路径的 SQLite 数据库

Open SQLite database with specified path with Room

我正在尝试通过使用 Room 库指定其路径来访问 Android 内部存储上的数据库。到目前为止,我一直在使用以下语句来完成它:

dbPath = "/data/data/my.sqlitetesting/files/database/myDataBase.db";
SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE);

如何使用 Room 访问此数据库?

@Jan Malek 我使用这段代码来知道我是否有 SD 卡并获取路径 NO SD CARD 然后我得到内部存储的路径

    public void onAvail() {

    String state = Environment.getExternalStorageState();

    if (state.equals(Environment.MEDIA_MOUNTED) && (!state.equals(Environment.MEDIA_MOUNTED_READ_ONLY))) {

        File removable = ContextCompat.getExternalFilesDirs(this, null)[1];
        THE_PATH = String.valueOf(removable) + "/Documents/";

        //System.out.println("ALL TRUE ==> " + THE_PATH);

    } else {// if (state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) {
        THE_PATH = "";
        //System.out.println("ALL FALSE ==> "+ THE_PATH);
    }
}

试试这几行代码我相信你发布的代码中的路径不正确如果这不起作用请告诉我们

        Context context = this;
    String removable = getFilesDir().getAbsolutePath();
    THE_PATH = String.valueOf(removable)+"/";
    System.out.println("INTERNAL PATH ======> "+THE_PATH);
    File file = new File(context.getFilesDir(), "NAME_OF_FILE");
    String PA = String.valueOf(file);
    System.out.println("Where AM  I ======> "+PA);

据我所知,导入db文件到room目前还不行。但还有另一种方式:

你也可以试试这个库:RoomAsset