关于onUpgrade方法android的问题

时间:2011-09-01 16:59:49

标签: android database methods sqlite

我在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方法。我可以保留表中的数据吗?请告诉我。 提前谢谢你。

2 个答案:

答案 0 :(得分:1)

  

那么将从旧的或新的.apk中调用onUpgrade方法。

来自新的.apk。旧的一个在这一点上消失了。

  

我可以保留表中的数据吗?

您必须以这样的方式对升级进行编码,即保留所需的数据,包括所需的旧数据。

答案 1 :(得分:0)

删除表将终止所有当前数据。为了保留数据,您需要编写自定义onUpgrade方法来执行此操作。以下是讨论此内容的上一篇文章,可能会就您需要做的事情提供一些想法:

SQLiteOpenHelper onUpgrade() Confusion Android