Android数据库升级并不仅仅是
Alert Table TableName Add ColumnName
就可以的,这样做会造成很多诸如列名冲突的问题。
而是要分多步走:
1.开启事物
2.旧表改名db.beginTransaction();
db.execSQL( "ALTER TABLE " + SystemNoticeTable.TABLE_NAME + " RENAME TO __temp__" + SystemNoticeTable.TABLE_NAME );
3.创建新表
db.execSQL(SystemNoticeTable. getInstance().toCreateQuery());
4.复制数据
db.execSQL( "INSERT INTO "+SystemNoticeTable.TABLE_NAME+" SELECT *, '' FROM __temp__"+SystemNoticeTable.TABLE_NAME);
5.删除旧表
db.execSQL( "DROP TABLE __temp__"+SystemNoticeTable.TABLE_NAME);
6.关闭事物
db.setTransactionSuccessful(); db.endTransaction();