SQLite数据库升级

来源:互联网 发布:网络跳线和网线的区别 编辑:程序博客网 时间:2024/05/24 06:54

一、数据库升级,主要有以下这几种情况:

  1. 增加表
  2. 删除表
  3. 修改表
    (1) 更改表名字
    (2) 增加表字段
    (3) 删除表字段、更改一个已经存在字段的名称、数据类型等等

按实现方式分类

1、删除一个已经存在的字段,或者更改一个已经存在字段的名称、数据类型等等
2、增加表、删除表、增加表字段、修改表名字

二、增加表和删除表

问题不大,因为它们都没有涉及到数据的迁移问题,增加表只是在原来的基础上CRTATE TABLE,而删除表就是对历史数据不需要了,那只要DROP TABLE即可。那么修改表呢?

三、修改表

1、 SQLite 仅仅支持 ALTER TABLE 语句的一部分功能,我们可以用 ALTER TABLE 语句来更改一个表的名字,也可向表中增加一个字段(列)

ALTER TABLE 旧表名 RENAME TO 新表名  // 改变表名 ALTER TABLE 表名 ADD COLUMN 列名 数据类型  // 增加一列

2、 但是我们不能删除一个已经存在的字段,或者更改一个已经存在字段的名称、数据类型等等

这时候只能使用复制表思想了,具体步骤如下:

// 将表名改为临时表ALTER TABLE student RENAME TO student_temp;// 创建新表CREATE TABLE student (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT);// 导入数据INSERT INTO student (id, name) SELECT id, title FROM student_temp;// 更新sqlite_sequenceUPDATE sqlite_sequence SET seq = 3 WHERE name = student;// 由于在SQLite中使用自增长字段,引擎会自动产生一个sqlite_sequence表,// 用于记录每个表的自增长字段的已使用的最大值,所以要一起更新下。// 如果有没有设置自增长,则跳过此步骤。// 删除临时表(可选)DROP TABLE student_temp;

四、增加表、删除表、增加表的字段、更改表名字

这几种情况参考:Android SQLite数据库版本升级原理解析