我已经提交了一个带有SQLite
数据库文件的iOS应用,用于在应用内存储数据。
现在在应用程序的下一个版本中 - 我在数据库文件中进行了一些修改。
像,
我想什么?
我将在我的应用程序中添加一个新的数据库文件(其中包括所有更改),首次运行应用程序(更新后)我将检查是否存在旧的数据库文件,如果可用,将附加所有内容从旧文件到新文件,最后将删除旧文件。
这是正确的方式,还是有更重要的方式,如核心数据迁移或其他更合适的方式?
答案 0 :(得分:2)
核心数据迁移是完全不同的事情。但是如果你想修改SQLite数据库,你可以
答案 1 :(得分:2)
我不知道是否存在正确的方法,但我在这种情况下的经验是创建一个sql迁移脚本并使用sqlite的pragma user_version控制数据库版本。
编辑:
我的应用程序有三个数据库更改,然后我有三个sql迁移脚本。当应用程序启动时,存在if
以检查数据库user_version,然后我应用所需的脚本进行数据库更新。
在这个脚本中,我创建了新表,我获取了旧表的信息,我在最近创建的表中插入了数据,在脚本的最后我设置了user_version:
//this number is the version of database: 1, 2, 3...
PRAGMA user_version = 2;
。
要知道用户拥有哪个版本,我会执行查询PRAGMA user_version;
。
我希望这可以帮到你。
EDIT2:在USER表中添加了字段“login”:
//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;