gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:01:36 25 4
gpt4 key购买 nike

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

现在,在该应用的下一个版本中 – 我对数据库文件进行了一些修改。

喜欢,

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

我在想什么?

I'll add a new database file (which included all changes) in my app, at first run of the app (after update) I'll check for the existence of an old database file, if available, will append everything from old to new file and lastly will delete the old file.

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

最佳答案

我不知道是否存在正确的方法,但我在这种情况下的经验是创建一个sql迁移脚本并使用sqlite的pragma user_version控制数据库版本。

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

在此脚本中,我创建新表,获取旧表的信息,将数据插入最近创建的表中,并在脚本末尾设置 user_version:

//这个数字是数据库的版本:1,2,3...
PRAGMA user_version = 2;

要了解用户拥有哪个版本,我执行查询 PRAGMA user_version;

希望这可以帮助你。

EDIT2:在 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;

关于ios - 如何将 SQLite 文件中的更改迁移到现有应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32607487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com