Android 调用onUpgrade时是否会丢失数据

Android 调用onUpgrade时是否会丢失数据,android,database,sqlite,Android,Database,Sqlite,我创建了DatabaseHelper,使我的开发更容易。若我的数据库版本从1升级到2,将调用onUpgrade并删除表。我想知道这是否会导致存储在表中的数据也被删除?我的意思是,我会丢失存储在表中的数据吗 这是密码 private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, nu

我创建了DatabaseHelper,使我的开发更容易。若我的数据库版本从1升级到2,将调用onUpgrade并删除表。我想知道这是否会导致存储在表中的数据也被删除?我的意思是,我会丢失存储在表中的数据吗

这是密码

private static class DatabaseHelper extends SQLiteOpenHelper {

    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS notes");
        onCreate(db);
    }
}

当您删除一个表时,它的所有数据也将被删除。如果要保留该表,请先重命名该表,创建新表,然后将旧表中的数据选择到新表中。

删除表时,表中的所有数据也将被删除。如果要保留该表,请先重命名该表,创建新表,然后将旧表中的数据选择为新表。

通过查看代码,是,您将丢失数据库的当前表,并将创建一个新的空表
notes

因此,升级数据库的最佳方法是:

  db.execSQL("DROP TABLE IF EXISTS notes");
语句,您应该备份当前数据库(最简单的方法是重命名表),然后删除当前表以创建新表


在编辑/升级信息之前保留信息备份始终是一种良好的编程实践。

通过查看代码,是,您将丢失数据库的当前表,并将创建一个新的空表
注释

因此,升级数据库的最佳方法是:

  db.execSQL("DROP TABLE IF EXISTS notes");
语句,您应该备份当前数据库(最简单的方法是重命名表),然后删除当前表以创建新表


在编辑/升级信息之前保留信息备份始终是一种良好的编程实践。

如果列中有更改,您可以在onUpgrade方法中更改表。若要创建新表,则只在onUpgrade内调用Drop,若架构中并没有更改,则不要在onUpgrade方法内执行任何操作。

若列中有更改,则可以在onUpgrade方法中更改表。如果您想创建一个新的表,那么只需在onUpgrade内调用Drop,如果架构没有变化,请不要在onUpgrade方法内执行任何操作。

重命名表的好主意。我试试看。重新命名这个表是个好主意。我要试一试。