我想通過使用房間庫指定其路徑訪問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你是對的,我沒有真正的編碼它,我只是想表明這樣的路徑可能是什麼樣子。 –