我试图做一个简单的例子,使用我自己的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