1、安卓sqlite3數據庫跨版本升級操作
直接安裝最新版本的APP,走onCreate方法,所以在數據庫版本修改升級的時候,修改onCreate方法創建最新的數據庫表格;
APP升級操作,數據庫有變更的話:走onUpgrade方法,在此方法裏面,判斷舊的APP版本號,根據不同版本號的數據庫,進行一個循環操作,循環從當前版本APP到要升級版本APP的版本,添加進來每一版數據庫所做的操作。做相應的添加字段處理。
/**
* 新版本比舊版本高就會走這個方法
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
for (int i = oldVersion; i < newVersion; i++) {
switch (i) {
case DataBaseConfig.DATABASE_FIRST_VERSION:
updateUpgradeToVersion2(db);//修改表原有字段並新增字段
break;
default:
break;
}
}
}
private void updateUpgradeToVersion2(SQLiteDatabase db) {
try{
db.beginTransaction();
// 1, 將表TABLE_TEST1重命名爲TABLE_TEST1+"_temp"
String tempTableName = DataBaseConfig.TABLE_TEST1 + "_temp";
String sql = "ALTER TABLE " + DataBaseConfig.TABLE_TEST1 + " RENAME TO " + tempTableName;
db.execSQL(sql);
// 2, 創建用戶表(字段id、name改變、並新增了以個字段phone)
db.execSQL(DataBaseConfig.NEW_VERSION_INFO);
// 3, 將舊錶數據導入到新表中,舊錶中的id,name,age分別查到新表中的id,name,sign
sql = "INSERT INTO " + DataBaseConfig.TABLE_TEST1 + " (" + "id,name,sign" + ") " + " SELECT " + "id,name,age" + " FROM " + tempTableName;
db.execSQL(sql);
// 4, 刪除舊的表
db.execSQL("DROP TABLE IF EXISTS " + tempTableName);
db.setTransactionSuccessful();
db.setVersion(2);
}catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally {
db.endTransaction();
}
}
realm數據版本升級
litpale數據庫版本升級