在升级期间,我想向我的数据库添加一个新表,但是我还希望在升级应用程序时不会丢失其他表中的数据。有人可以告诉我,我该怎么办?如何在发布应用程序后创建新表
有可能吗?
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_GROUPS_TABLE);
db.execSQL(CREATE_A_GROUPS_TABLE);
db.execSQL(CREATE_MESSAGES_TABLE);
db.execSQL(CREATE_REPORTING_TABLE);
db.execSQL(CREATE_SUCC_SENDING_TABLE);
db.execSQL(CREATE_NOTIFICATIONS_TABLE);
db.execSQL(CREATE_RECEIVES_TABLE); // new table
}
@Override
public void onUpgrade(SQLiteDatabase db, final int oldVersion,
final int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + GROUPS);
db.execSQL("DROP TABLE IF EXISTS " + NOTIFICATIONS);
db.execSQL("DROP TABLE IF EXISTS " + A_GROUP);
db.execSQL("DROP TABLE IF EXISTS " + MESSAGES);
db.execSQL("DROP TABLE IF EXISTS " + REPORTING);
db.execSQL("DROP TABLE IF EXISTS " + SUCC_SENDING);
db.execSQL("DROP TABLE IF EXISTS " + RECEIVES); //new table
onCreate(db);
}
我的新表RECEIVES
更新
当前版本1
。我想将其更改为2
。
public MainDB(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_GROUPS_TABLE);
db.execSQL(CREATE_A_GROUPS_TABLE);
db.execSQL(CREATE_MESSAGES_TABLE);
db.execSQL(CREATE_REPORTING_TABLE);
db.execSQL(CREATE_SUCC_SENDING_TABLE);
db.execSQL(CREATE_NOTIFICATIONS_TABLE);
//db.execSQL(CREATE_RECEIVES_TABLE); //new table
}
@Override
public void onUpgrade(SQLiteDatabase db, final int oldVersion,
final int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + GROUPS);
db.execSQL("DROP TABLE IF EXISTS " + NOTIFICATIONS);
db.execSQL("DROP TABLE IF EXISTS " + A_GROUP);
db.execSQL("DROP TABLE IF EXISTS " + MESSAGES);
db.execSQL("DROP TABLE IF EXISTS " + REPORTING);
db.execSQL("DROP TABLE IF EXISTS " + SUCC_SENDING);
// db.execSQL("DROP TABLE IF EXISTS " + RECEIVES); // new table
onCreate(db);
}
我更新了我的问题。 PLZ给我正确的代码。非常感谢。 'RECEIVES'是新表。 –
这已经是正确的。它只是有额外的信息,当你想更新到V3 – Kuffs
好,但当我更改版本代码为2时,其他表的所有数据将被删除。我不想丢失我的数据。 –