[英]SQLite - Java - onCreate and onUpgrade - Android
您好,我创建了我的第一个应用程序,它使用我自己的继承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?
public void onUpgrade()
与onResume()
。 仅当用户使用较新版本更新其应用程序时,才会调用onUpgrade()
。 重新启动->调用onCreate()
或onResume()
。
例如:
首次创建应用程序时,您拥有带有FIRSTNAME和LASTNAME的表EMPLOYEE
但是,在应用程序的version2(将在以后发布)中,您将新列MIDDLENAME添加到此表中,然后将使用onUpgrade()
调用(对于升级到新版本的用户)。
在需要升级数据库时调用。 实现应使用此方法删除表,添加表或执行其他任何升级到新架构版本所需的操作。
创建数据库时将调用onCreate()
。
当您增加数据库版本号时,将调用onUpgrade()
。 在这种情况下,您将删除表中的所有内容并重新开始。
如果要清除数据库,则每次应用恢复时都必须手动删除表。 然后再次调用onCreate()
进行重建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.