我試圖做一個簡單的例子,使用我自己的SQLite數據庫,android和greenDAO生成器來爲我的android應用程序生成類。當應用程序啓動時無法找到數據庫
我的數據庫文件中這樣定義:
1)創建一個名爲 「OneTableDB」 數據庫(不帶擴展,SQLite的3)具有以下結構:
實體:教授
- 教授編號:primarykey
- name:text
- age:int
實體:android_metadata
- 區域:文本與價值 'EN_US',並與幾排的實體
然後我填充android_metadata。
2)放置在我的Android應用結構內:proj_root /數據庫/ 完整路徑數據庫文件:proj_root /數據庫/ OneTableDB
3)我要檢查數據庫中是否存在與否(在方法我情況下,它必須存在,因爲我放在f.exists(),則返回假值,然後打破上
sqliteDatabase = SQLiteDatabase.openDatabase(databasePath, null,
SQLiteDatabase.OPEN_READONLY);
內部數據庫文件夾)
private boolean databaseExists() {
SQLiteDatabase sqliteDatabase = null;
try {
String databasePath = DB_PATH + DB_NAME;
File f = new File(DB_PATH + DB_NAME);
f.exists();
sqliteDatabase = SQLiteDatabase.openDatabase(databasePath, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
e.printStackTrace();
}
if (sqliteDatabase != null) {
sqliteDatabase.close();
}
return sqliteDatabase != null ? true : false;
}
//DB_PATH = /data/data/com.myapp.android_dao_tests/databases/
//DB_NAME = OneTableDB
調試
在調試過程中,我使用adb shell檢查路徑是否正確,實際上我可以導航到/data/data/com.myapp.android_dao_tests/並且沒有數據庫文件夾!
任何想法如何解決這個問題?
在此先感謝?
如果你的數據庫不存在,它可能只是從來沒有創建。我會在那裏尋找問題 - 你能發佈代碼來顯示你如何創建你的數據庫嗎? – PaF
我已經創建了android項目之外的數據庫。我已經手動創建了這個數據庫。並複製到我的項目中的數據庫文件夾。 – Bugdr0id
因此,您自己手動將DB文件放在那裏,但下次檢查時,該文件已不存在?您是否只在將文件複製到那裏後才安裝應用程序?嘗試先安裝應用程序,然後將數據庫文件複製到數據庫/文件夾,然後才運行應用程序(我希望應用程序在安裝時會刪除其內部文件夾(/data/data/com.myapp.android_dao_tests),所以這可能是丟失的DB文件的原因)。 – PaF