作Android應用,不可避免的會與SQLite打交道。隨着應用的不斷升級,原有的數據庫結構可能已經再也不適應新的功能,這時候,就須要對SQLite數據庫的結構進行升級了。數據庫
SQLite提供了ALTER TABLE命令,容許用戶重命名或添加新的字段到已有表中,可是不能從表中刪除字段。spa
而且只能在表的末尾添加字段,好比,爲 Subscription添加兩個字段:code
ALTER TABLE Subscription ADD COLUMN Activation BLOB;
ALTER TABLE Subscription ADD COLUMN Key BLOB;
另外,若是遇到複雜的修改操做,好比在修改的同時,須要進行數據的轉移,那麼能夠採起在一個事務中執行以下語句來實現修改表的需求。事務
1. 將表名改成臨時表
ip
ALTER TABLE Subscription RENAME TO __temp__Subscription;
2. 建立新表
it
CREATE TABLE Subscription (OrderId VARCHAR(32) PRIMARY KEY ,UserName VARCHAR(32) NOT NULL ,ProductId VARCHAR(16) NOT NULL);
3. 導入數據
io
INSERT INTO Subscription SELECT OrderId, 「」, ProductId FROM __temp__Subscription;
或者class
INSERT INTO Subscription() SELECT OrderId, 「」, ProductId FROM __temp__Subscription;
* 注意 雙引號」」 是用來補充原來不存在的數據的
4. 刪除臨時表
命名
DROP TABLE __temp__Subscription;
經過以上四個步驟,就能夠完成舊數據庫結構向新數據庫結構的遷移,而且其中還能夠保證數據不會應爲升級而流失。數據
固然,若是遇到減小字段的狀況,也能夠經過建立臨時表的方式來實現。