繁体   English   中英

SQLite-Java-onCreate和onUpgrade-Android

[英]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()调用(对于升级到新版本的用户)。

基于SQLiteOpenHelper文档

在需要升级数据库时调用。 实现应使用此方法删除表,添加表或执行其他任何升级到新架构版本所需的操作。

创建数据库时将调用onCreate()

当您增加数据库版本号时,将调用onUpgrade() 在这种情况下,您将删除表中的所有内容并重新开始。

如果要清除数据库,则每次应用恢复时都必须手动删除表。 然后再次调用onCreate()进行重建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM