在升級期間,我想向我的數據庫添加一個新表,但是我還希望在升級應用程序時不會丟失其他表中的數據。有人可以告訴我,我該怎麼辦?如何在發佈應用程序後創建新表
有可能嗎?
@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時,其他表的所有數據將被刪除。我不想丟失我的數據。 –