Android使用SQLite时无法alter table的一个玄学原因

最近因为一些需求,需要经常给sqlite表添加列或者删除列。然而很奇怪的是,下列语句执行不会报错,但打开表查看后发现根本没有执行到:

db_usr.execSQL("alter table "+DATABASEINFO.USRTABLE_NAME+ " add column " + name + " integer");

然而下列语句可以成功执行,只不过新列的数据类型为空

db_usr.execSQL("alter table "+DATABASEINFO.USRTABLE_NAME+ " add column " + name + "integer");
//因为integer前面忘了打空格

google很久没有结果后,快要放弃挣扎的我注意到,虽然SQLite说是对大小写不敏感,但系统设置SQLite的数据类型时习惯是大写。于是试着把integer改成了INTEGER:

db_usr.execSQL("alter table "+DATABASEINFO.USRTABLE_NAME+ " add column " + name + " INTEGER");

就成功了………………至于为什么目前还是不清楚。

最近也总结了一些在开发安卓时会让SQLite出错的比较低级但初学者容易犯的错误:

  1. 在连接字符串时少打空格。比如”add column”+NAME+”integer”。应为”add column “+NAME+” INTEGER”。
  2. 不习惯大写建表语句(然后可能会出现上述问题)
  3. 从前是SQL使用者可能会习惯性在数据类型上写Boolean,String, Int之类。然而SQLite的数据类型不长这样。
    原文作者:三水233
    原文地址: https://www.jianshu.com/p/8590c9c1da01
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞