2018年6月22日17:16:10
今天下午,想实现,向数据库表指定位置插入一条数据,用于保证,获取到的数据有序。但是感觉可能比较复杂。需要先获取到上一条的位置。
自己想着:直接插入数据时,添加一列标记字段。再获取数据时,再排序获取即可。
转载文件:
https://blog.csdn.net/codepython/article/details/47749973
一、sqlite alter table添加多列
最近在做Android数据库数据维护,新版本要在原有的表的基础上新增三个列。查询标准SQL语法,最初的执行语句如下:
1
2
3
|
String ADD_COLUMNS = "ALTER TABLE mytable ADD (source INTEGER DEFAULT 0, time TEXT, dura TEXT)" ; this .execQuery(ADD_COLUMNS); |
在执行这条语句的时候,程序崩溃,崩溃信息如下:
SQLiteException on:near "(":syntax error(code 1): while compiling: ALTER TABLE mytable ADD (source INTEGER DEFAULT 0, time TEXT, dura TEXT)
把在括号(有语法错误,那我就把括号去掉,执行语句换成:
1
2
3
|
String ADD_COLUMNS = "ALTER TABLE mytable ADD source INTEGER DEFAULT 0, time TEXT, dura TEXT" ; this .execQuery(ADD_COLUMNS); |
程序崩溃依旧,崩溃信息如下:
SQLiteException on:near ",":syntax error(code 1): while compiling: ALTER TABLE mytable ADD (source INTEGER DEFAULT 0, time TEXT, dura TEXT)
逗号附近有语法错误。
那么在SQLite中如何使用alter命令添加多列呢?
不要挣扎了,SQLite的alter不支持添加多列,一列一列来吧:
1
2
3
4
5
6
7
|
String ADD_COLUMNS_SOURCE = "ALTER TABLE mytable ADD source INTEGER DEFAULT 0" ; String ADD_COLUMNS_TIME = "ALTER TABLE mytable ADD time TEXT" ; String ADD_COLUMNS_DURA = "ALTER TABLE mytable ADD dura TEXT" ; this .execQuery(ADD_COLUMNS_SOURCE); this .execQuery(ADD_COLUMNS_TIME); this .execQuery(ADD_COLUMNS_DURA); |
下面是SQLite提供的alter语法: