如何将SQLite文件中的更改迁移到现有的应用程序?

我已经提交了一个带有SQLite数据库文件的iOS应用程序来存储应用程序中的数据。

现在在应用程序的下一个版本中 – 我有一些数据库文件的修改。

喜欢,

  1. 增加了新的表格(1个空的,2个固定的数据)
  2. 在表中添加新的列
  3. 从表中删除现有的列

什么,我在想什么?

我将在应用程序的第一次运行(更新后)中添加一个新的数据库文件(其中包括所有更改),我将检查旧数据库文件的存在(如果可用)将从旧到新文件,最后将删除旧文件。

这是正确的方式,还是可以有一个更重要的方式,如核心数据迁移或其他更合适的方式?

我不知道是否存在一个正确的方法,但我在这种情况下的经验,是创build一个SQL迁移脚本和控制SQLite的编译指示user_version的数据库版本。

编辑:我的应用程序有三个数据库更改,然后我有三个SQL迁移脚本。 当应用程序启动存在一个if检查数据库user_version,然后我应用所需的脚本进行数据库更新。

在这个脚本中,我创build了新表,我得到了旧表的信息,我在最近创build的表中插入了数据,在脚本的最后我设置了user_version:

//this number is the version of database: 1, 2, 3... PRAGMA user_version = 2;

要知道用户拥有哪个版本,我需要查询PRAGMA user_version;

我希望这可以帮助你。

编辑2:字段“login”添加在USER表中:

 //Create the new table CREATE TABLE user_new ( id TEXT PRIMARY KEY, login TEXT, name TEXT ); //Get data of older table INSERT INTO user_new SELECT id, null AS login, name FROM user; //Delete te older table DROP TABLE user; //Rename the new table ALTER TABLE user_new RENAME TO user; //Set database version PRAGMA user_version = 2; 

核心数据迁移是完全不同的事情。 但是如果你想修改SQLite数据库,你也可以

  1. replace旧的文件
  2. 通过查询更改SQL数据库结构。