gpt4 book ai didi

iphone - 如何更新 iPhone 应用程序上的 sqlite

转载 作者:行者123 更新时间:2023-12-03 21:19:18 25 4
gpt4 key购买 nike

我有一个 iPhone 应用程序,它使用 sqlite3 数据库来保存数据,在发布该应用程序之前,我需要确保某些表数据(用户已保存)必须复制到新数据库。

我应该如何管理此迁移。我正在考虑将数据库和查询分开。那不好吗?因此,当应用程序打开时,我检查数据库是否位于文档文件夹中,如果没有,则复制数据库并在单独的文件中运行查询。然后,当它是新版本时,我检查版本号并仅运行文件中的查询(更新数据并更改其中一些数据),而不复制数据库?

最佳答案

实现此目的的一种方法是在数据库中创建一个包含数据库架构版本的表。

一旦用户在文档文件夹中拥有数据库(可能是从应用程序包中的预制数据库复制而来),您应该对该数据库进行更改以使其与当前架构保持同步。这包括升级架构和任何更改的数据。

您可以通过在应用程序中捆绑多个 sql 脚本来实现此目的,这些脚本将使用户数据库架构一次向前推进一步,例如:

  1. 从用户数据库读取架构版本 => 3(当前为 5)
  2. 执行sql脚本“schema_3_to_4.sql”
  3. 执行sql脚本“schema_4_to_5.sql”
  4. 全部完成 - 可以使用

如果您当前的数据库中没有架构版本,只需将其视为版本 0 并在版本 1 更新中添加该表,例如:

begin exclusive transaction;

create table schema (version integer);
insert into schema(version) values (1);

create table temp_update as select * from question;
drop table question;
create table question(id INTEGER PRIMARY KEY, new_answer INTEGER);
insert into question(id, new_answer) select id, 42 from temp_update;
drop table temp_update;

commit;

关于iphone - 如何更新 iPhone 应用程序上的 sqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6382709/

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