为什么我们需要onUpgrade(); SQLiteOpenHelper类中的方法

Qad*_*ain 8 database sqlite android sqliteopenhelper android-sqlite

我正在学习本教程.http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

可以任何身体请让我清楚这段代码.

 // Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
            + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
            + KEY_PH_NO + " TEXT" + ")";
    db.execSQL(CREATE_CONTACTS_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

    // Create tables again
    onCreate(db);
}
Run Code Online (Sandbox Code Playgroud)

问题

onUpgrade();方法的目的是什么?

什么时候叫?正如文档所说this is Called when the database needs to be upgraded,通过升级数据库意味着什么?

重要

为什么我们在这个方法中删除表并重新创建?

提前致谢.

Dev*_*eva 9

onUpgrade基本上用于处理任何新版本应用程序的新数据库更改(可能是新列添加,表添加).

在onUpgrade中并不总是需要删除表,这取决于您的用例.如果要求不要保留旧版本应用程序中的数据,那么drop应该会有所帮助,但如果它像更改架构一样,那么它应该只有更改脚本.

  • 假设您在谷歌播放中使用dbversion = 1的应用程序,现在您计划使用需要更改数据库的附加功能重新启动应用程序的新版本.所以你改变你的dbversion = 2,并且为已经在使用旧版本应用程序的用户自动调用onUpgrade方法.希望我在这里. (6认同)

Rob*_*ond 5

升级意味着已对数据库架构进行了更改(版本号不同),并且需要进行升级.删除表并重新创建是一种方法.您还可以发出"alter table"语句.