Mar*_*tin 8 database sqlite android
在Android中,我使用以下方法来查看sqlite数据库是否存在以及是否可以打开它并使用它.
如果它未通过此测试,我将从资产中复制数据库文件(这应该只发生一次,当用户首次启动应用程序时).
/*
* Check if the database already exist to avoid re-copying the file each time you open the application.
* @return true if it exists, false if it doesn't
*/
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
} catch(SQLiteException e) {
//database does't exist yet.
}
if(checkDB != null){
checkDB.close();
}
return checkDB != null ? true : false;
}
Run Code Online (Sandbox Code Playgroud)
问题是我收到用户的报告说他们的数据已被清除,在调查时我可以看到数据库被资产中的数据库替换.因此,出于某种原因,即使用户已经有数据库文件,有时SQLiteDatabase.openDatabase()也会引发错误.我自己无法重现这个问题,但似乎有些用户会发生这种情况.
任何人都知道问题可能在这里?有没有更好的方法来进行此测试?
Kuf*_*ffs 32
如何检查文件系统以查看数据库是否存在而不是先尝试打开它?
您可能正在尝试打开已打开的数据库,这将导致错误,导致您认为它不存在.
File database=getApplicationContext().getDatabasePath("databasename.db");
if (!database.exists()) {
// Database does not exist so copy it from assets here
Log.i("Database", "Not Found");
} else {
Log.i("Database", "Found");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23246 次 |
| 最近记录: |