我在Android市场上发布了一个应用程序,现在我想创建一个包含数据库更改的新版本。问题是,我已经发布的应用程序版本有这个onUpgrade方法:
@Override
public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) {
Log.w("TaskDBAdapter", "Upgrading from version " +
_oldVersion + " to " +
_newVersion + ", which will destroy all old data");
// Drop the old table.
_db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_1);
_db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_2);
// Create a new one.
onCreate(_db);
}
因为我想添加一个新表,所以我知道我必须在这里进行一些更改,以保留我已经使用以前版本创建的表中的数据。那么将从旧的或新的.apk调用onUpgrade方法。我可以保留表中的数据吗?请告诉我。 提前谢谢你。
答案 0 :(得分:1)
那么将从旧的或新的.apk中调用onUpgrade方法。
来自新的.apk。旧的一个在这一点上消失了。
我可以保留表中的数据吗?
您必须以这样的方式对升级进行编码,即保留所需的数据,包括所需的旧数据。
答案 1 :(得分:0)
删除表将终止所有当前数据。为了保留数据,您需要编写自定义onUpgrade方法来执行此操作。以下是讨论此内容的上一篇文章,可能会就您需要做的事情提供一些想法: