TShopping
標題:
SQLite在Android下增加新的columns
[打印本頁]
作者:
woff
時間:
2018-2-8 18:13
標題:
SQLite在Android下增加新的columns
在寫App時,會用到sqlite當資料庫
但app會一直更新
所以資料庫欄位也會增加
這時如何讓使用者無痛更新呢?
假設我要再現有資料庫資加一個欄位
在呼叫sqlite時最上端會用到這行
public MyDB(Context context) {
super(context, SQL_NAME, null, 1);
}
複製代碼
這時找到這一函式
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
String ALTER_TBL =
"ALTER TABLE " + TABLE_NAME +
" ADD COLUMN kkk text;";
db.execSQL(ALTER_TBL);
break;
}
複製代碼
這時把1改成2
public MyDB(Context context) {
super(context, SQL_NAME, null, 2);
}
複製代碼
當APP運行時
就會多一欄位 kkk
如圖
Screenshot_2018-02-08-18-02-13.png
(56.4 KB, 下載次數: 3)
下載附件
保存到相冊
2018-2-8 18:00 上傳
如果我要刪除columns時,又該如何處理呢?
首先先把table改名
然後建新new_table
把table資料copy 到new_table
這樣就可以了
實作
建新的table
CREATE TABLE team(Name TEXT, Coach TEXT, City TEXT)
複製代碼
等等把 city 欄位改成 Location
步驟1: 更名原始 table為
team_orig
:
ALTER TABLE team RENAME TO team_orig;
複製代碼
步驟 2: 建置新的替代table有:Name , Coach , Location
CREATE TABLE team(Name TEXT, Coach TEXT, Location TEXT);
複製代碼
步驟 3: 複製資料從舊table到新table
INSERT INTO team(Name, Coach, Location) SELECT Name, Coach, City FROM team_orig;
複製代碼
Note: The above command should be all one line.
步驟 4: 刪除舊 table:
DROP TABLE team_orig;
複製代碼
參考資料
https://stackoverflow.com/questi ... -database-in-my-app
https://blog.xojo.com/2013/12/04 ... s-in-sqlite-tables/
歡迎光臨 TShopping (http://www.tshopping.com.tw/)
Powered by Discuz! X3.2