你好我已经创建了我的第一个应用程序,它使用我自己的类继承SQLiteOpenHelper
我注意到在继承时我必须实现一些方法:
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
我注意到的是:在很多教程中,我看到人们都在使用这样的东西:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE table_name (parameters here...)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS table_name");
onCreate(db);
}
我认为上述方法中的代码执行此操作:每当用户重新启动应用程序时,它应该删除整个表并重新创建它,但事实并非如此,那么它的目标是什么?我刚刚在手机上测试了它,基本上我关闭应用程序并杀死它的进程,然后重新打开它,表仍然存在与之前的内容,它不是我的目标,确定我想保留我所有的数据库会议,但我只是没有得到这个示例代码......
以哪种方式调用?
我认为第一个是构造函数然后onCreate然后onUpgrade但是它不会删除表,所以它意味着onUpgrade没有被调用?
答案 0 :(得分:1)
public void onUpgrade()
与onResume()
不同。仅当用户使用较新版本更新其应用时,才会调用onUpgrade()
。重启 - >致电onCreate()
或onResume()
。
例如:
当您第一次创建应用时,您拥有带有FIRSTNAME和LASTNAME的表EMPLOYEE
但是在您的应用的第2版(将在稍后发布)中,您将新列MIDDLENAME添加到此表中,然后将使用onUpgrade()
调用(对于正在升级到新版本的用户)。
基于SQLiteOpenHelper documentation:
需要升级数据库时调用。实施 应该使用此方法删除表,添加表或执行任何其他操作 它需要升级到新的架构版本。
答案 1 :(得分:1)
onCreate()
。
onUpgrade()
。在这种情况下,您将删除表格中的所有内容并重新开始。
如果要像这样清除数据库,每次应用程序恢复时,您都必须手动删除表。然后再次调用onCreate()
重建它。