我正在开发Android应用程序。 我的应用程序包含一个本地数据库,位于应用程序的/ assests文件夹中。 当用户安装应用程序时,它会复制数据库以便使用它。然后用户可以向其添加项目。
我的问题是,如果我将发布我的应用程序的更新,它是否会清除数据(删除复制的数据库),从而删除用户对数据库的更改(因为应用程序将再次从assets文件夹复制数据库) ?
答案 0 :(得分:0)
这完全取决于你如何复制它。你总是复制它而不检查它是否已经存在?然后是的,它可能会。你确实需要向我们展示一些代码才能确定。
答案 1 :(得分:0)
您应该覆盖SQLiteOpenHelper中的onUpgrade方法:
/*
* (non-Javadoc)
*
* @see
* android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite
* .SQLiteDatabase)
*/
@Override
public void onCreate(SQLiteDatabase db) {
// CREATE TABLE teas (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT
// NULL, brew_time INTEGER);
String sql = "CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + NAME + " TEXT NOT NULL, " + BREW_TIME + " INTEGER" + ");";
db.execSQL(sql);
}
/*
* (non-Javadoc)
*
* @see
* android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite
* .SQLiteDatabase, int, int)
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
答案 2 :(得分:0)
没有。如果用户正在更新应用程序(不卸载它 - 在这种情况下它将被删除)并且数据库已经存在,那么Android将不仅仅删除它(它可能包含重要信息!)。
而是调用SQLiteOpenHelper的onUpgrade
方法,由您决定是要清除数据还是保留数据。