【问题标题】:Question about onUpgrade method android关于onUpgrade方法android的问题
【发布时间】:2011-11-08 13:55:38
【问题描述】:

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

【问题讨论】:

    标签: android database methods sqlite


    【解决方案1】:

    那么 onUpgrade 方法将被调用,从旧的还是从新的 .apk。

    来自新的 .apk。旧的已经不在了。

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

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

    【讨论】:

    • 谢谢你,我最关心的是它是来自新的还是旧的.apk。你回答了我的问题
    【解决方案2】:

    删除表将杀死所有当前数据。为了保存数据,您需要编写一个自定义的 onUpgrade 方法来执行此操作。这是之前的一篇文章,讨论了这个问题,可能会给你一些关于你需要做什么的想法:

    SQLiteOpenHelper onUpgrade() Confusion Android

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 2020-08-01
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多