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

我遵循这个教程。 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); } 

问题

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

当它被调用? 作为文档说this is Called when the database needs to be upgraded什么意思是升级数据库

重要

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

提前致谢。

Solutions Collecting From Web of "为什么我们需要onUpgrade(); 方法在SQLiteOpenHelper类中"

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

在升级中放置表并不总是必要的,这一切都取决于你的用例。 如果需求是不保留从旧版本的应用程序的数据然后下降应该有所帮助,但如果它像改变架构,那么它应该只有改变脚本。

升级意味着对数据库模式进行了更改(版本号不同),需要升级。 放下桌子并重新创build是一种方法。 你也可以发出“alter table”语句。

当你打开你的数据库时,它检查版本号是否存在。 你可以“升级”你的数据库,而不是创build新的。

一个很好的教程: http : //www.vogella.com/articles/AndroidSQLite/article.html

更新数据库版本时调用此方法。 当再次调用onCreate方法时,它将删除现有的表并重新创build它。

回答你的4个问题:

1) onUpgrade的目的是pipe理一个新的数据库结构。 你可以开始你的应用程序的简单function,那么你需要例如添加一个新的列,所以你需要增加你的数据库的版本从1到2,并在onUpgrade指令添加一个新的列,这样,如果用户更新应用程序,新的列被添加。

2)当你有一个新版本的数据库时,onUpgrade被调用,并且你在super方法中增加了int数(这里是1,所以你最终将它改为2)

  public static class DatabaseHelper extends SQLiteOpenHelper{ DatabaseHelper(Context context){ super (context,DATABASE_NAME,null,1); } 

3)请看上面关于更新数据库是什么意思

4)我们删除表并重新创build,因为要修改表(添加适合新function的新列的示例),可以先执行一个逻辑方法,在“销毁”/删除表之前创build一个新表与所有的数据。 但是,这可能不是要走的路,虽然重新创build数据可能意味着身份证号码将是连续的(通常不是连续的:你可以有1,2和4,因为3已被删除),因此下降,然后再次创build表,并最终加载以前的数据,你可以有这个ID一致性。 有时你可能想使用ALTER而不是DROP。 为什么? 通常,因为使用DROP,用户会丢失数据库中已有的内容,那么如果您想了解更多关于最佳实践和更复杂的真实生活场景,请查看这个令人赞叹的回复