最近因?yàn)橐恍┬枨螅枰?jīng)常給sqlite表添加列或者刪除列。然而很奇怪的是曼玩,下列語(yǔ)句執(zhí)行不會(huì)報(bào)錯(cuò)扛伍,但打開(kāi)表查看后發(fā)現(xiàn)根本沒(méi)有執(zhí)行到:
db_usr.execSQL("alter table "+DATABASEINFO.USRTABLE_NAME+ " add column " + name + " integer");
然而下列語(yǔ)句可以成功執(zhí)行筷畦,只不過(guò)新列的數(shù)據(jù)類(lèi)型為空
db_usr.execSQL("alter table "+DATABASEINFO.USRTABLE_NAME+ " add column " + name + "integer");
//因?yàn)閕nteger前面忘了打空格
google很久沒(méi)有結(jié)果后,快要放棄掙扎的我注意到刺洒,雖然SQLite說(shuō)是對(duì)大小寫(xiě)不敏感鳖宾,但系統(tǒng)設(shè)置SQLite的數(shù)據(jù)類(lèi)型時(shí)習(xí)慣是大寫(xiě)。于是試著把integer改成了INTEGER:
db_usr.execSQL("alter table "+DATABASEINFO.USRTABLE_NAME+ " add column " + name + " INTEGER");
就成功了………………至于為什么目前還是不清楚逆航。
最近也總結(jié)了一些在開(kāi)發(fā)安卓時(shí)會(huì)讓SQLite出錯(cuò)的比較低級(jí)但初學(xué)者容易犯的錯(cuò)誤:
- 在連接字符串時(shí)少打空格鼎文。比如"add column"+NAME+"integer"。應(yīng)為"add column "+NAME+" INTEGER"因俐。
- 不習(xí)慣大寫(xiě)建表語(yǔ)句(然后可能會(huì)出現(xiàn)上述問(wèn)題)
- 從前是SQL使用者可能會(huì)習(xí)慣性在數(shù)據(jù)類(lèi)型上寫(xiě)B(tài)oolean拇惋,String, Int之類(lèi)抹剩。然而SQLite的數(shù)據(jù)類(lèi)型不長(zhǎng)這樣撑帖。