SQLite數(shù)據(jù)庫(kù)里面的表創(chuàng)建之后浅辙,項(xiàng)目開(kāi)發(fā)過(guò)程中可能會(huì)有添加字段的需要
1.第一種方法
我們可以直接舍棄現(xiàn)有的表格,直接加上版本號(hào)創(chuàng)建新的表格阎姥,但是這樣有弊端记舆,原來(lái)存儲(chǔ)的數(shù)據(jù)就直接丟失了,但是還是存在數(shù)據(jù)庫(kù)里占用著內(nèi)存呼巴,所以我們不建議這種方法
2.第二種方法
在第一種方法的基礎(chǔ)上實(shí)現(xiàn)數(shù)據(jù)保留泽腮,需要在創(chuàng)建新表格的同時(shí),取出上一個(gè)版本表格中的數(shù)據(jù)衣赶,添加上新字段的值后诊赊,重新插入新的數(shù)據(jù)表格中,但是這種方式在數(shù)據(jù)庫(kù)里存有大量數(shù)據(jù)的時(shí)候府瞄,實(shí)現(xiàn)起來(lái)非常有問(wèn)題碧磅。
3.第三種方法
樓主正在使用的方法
直接判斷需要更新的字段是否存在,沒(méi)有存在的話插入新的字段
//在已經(jīng)創(chuàng)建好的表格中插入add字段的SQ語(yǔ)句
NSString *addStr = [NSString stringWithFormat:@"alter table '%@' add 'add' text ",name];
//判斷maillisttable表格中是否有add字段
if (![_dataBase columnExists:@"add" inTableWithName:@"maillisttable"])
{
[_dataBase executeUpdate:addStr];
}
注意:這里確實(shí)可以滿足升級(jí)數(shù)據(jù)庫(kù)字段的需求遵馆,但是重復(fù)修改數(shù)據(jù)庫(kù)字段也是不建議的鲸郊,所以建議在創(chuàng)建和維護(hù)數(shù)據(jù)庫(kù)時(shí),一定要多提前做好數(shù)據(jù)庫(kù)設(shè)計(jì)团搞,盡量避免頻繁升級(jí)數(shù)據(jù)庫(kù)操作严望。