我创建了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);
}
}
答案 0 :(得分:2)
当您删除表格时,它的所有数据也会被删除。如果要保留它,请先重命名表,创建新表,然后从旧表中选择新数据。
答案 1 :(得分:2)
通过查看您的代码,是,您将丢失 数据库 的当前表格和新的空表notes
将被创建。
因此,升级数据库的最佳方法是:
db.execSQL("DROP TABLE IF EXISTS notes");
声明,您应该备份当前数据库(最简单的方法是重命名表),然后删除当前表以创建新表。
在编辑/升级信息之前保留信息备份始终是一种很好的编程习惯。
答案 2 :(得分:0)
如果coloumn中有更改,您可以在onUpgrade方法中更改表。如果你想制作新表,那么只在onUpgrade中调用Drop,如果模式没有变化,则不要在onUpgrade方法中做任何事情。