我想通过使用房间库指定其路径访问Android的内部存储器上的数据库。到目前为止,我一直在使用以下语句:打开SQLite数据库与指定的路径与房间
dbPath = "/data/data/my.sqlitetesting/files/database/myDataBase.db";
SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE);
如何使用此空间访问此DB?
我想通过使用房间库指定其路径访问Android的内部存储器上的数据库。到目前为止,我一直在使用以下语句:打开SQLite数据库与指定的路径与房间
dbPath = "/data/data/my.sqlitetesting/files/database/myDataBase.db";
SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE);
如何使用此空间访问此DB?
@Jan马利克我用这个代码知道我是否有SD卡和获取路径无SD卡 然后我得到的内部存储路径
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);
@janmalek我不介意表示你接受答案,并通过点击向上按钮对我来说似乎合乎逻辑,但我有两个倒票,不明白为什么任何人都可以解释 – Grendel
你的回答没有回答我的问题。我在问如何使用Room库连接到SQLite数据库。我没有问如何获得这样的数据库的路径。 –
据我所知,导入数据库文件到房间目前不正确。但还有另一种方式:How to use Room Persistence Library with pre-populated database?
您也可以尝试这个库:RoomAsset
据我所知,你必须实现自定义'SupportSQLiteOpenHelper'和'SupportSQLiteOpenHelper.Factory'然后用'RoomDatabase.Builder.openHelperFactory' .... 'AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class,“database-name”)。openHelperFactory(customFactory)build();' – Selvin
首先,把Room放在一边。从不硬编码路径。对于许多基于操作系统版本或用户(例如,辅助帐户)的Android设备,该硬编码值是错误的。您的硬编码值或多或少映射到'new File(new File(getFilesDir(),“database”),“myDataBase.db”))'。但是,我同意塞尔文的观点。因为你的数据库位于非标准位置,AFAIK你需要一个定制的'SupportSQLiteOpenHelper',它可以在运行时导出适当的位置。 – CommonsWare
'@CommonsWare你是对的,我没有真正的编码它,我只是想表明这样的路径可能是什么样子。 –