【问题标题】:Sqlite data MigrationSqlite 数据迁移
【发布时间】:2011-11-25 09:13:42
【问题描述】:

应用内 Sqlite 数据迁移的最佳方法是什么。由于我是 iphone 开发新手,所以我使用 Sqlite 创建了我的应用程序。请帮忙关注

【问题讨论】:

  • 你能告诉我你希望你的数据库迁移到哪里吗?
  • 我想在应用商店更新我的应用版本,所以需要迁移用户数据,因为我的新版本可能有新表。
  • 您想从以前版本的应用程序中删除旧表吗?或者您只是希望已经在使用您的应用程序的用户,在下载新版本时,他们的数据将是他们的新应用程序?
  • 不只是想将旧数据库中的数据转移到我的新数据库中,因为应用程序的功能得到了增强。
  • @ankit.tlp:这就是我的回答。为已经在使用旧数据库的用户保留旧数据库中的数据,并且还包括新的更改。更改将通过查询进行。更多信息请参考我的回答。

标签: iphone sqlite objective-c-2.0


【解决方案1】:

您创建一个数据库升级过程,并使其在应用程序启动时第一次执行。

所以这将在第一次加载应用程序时通过 create 语句创建一个新表。

它还将帮助您保存用户在其当前数据库中的所有数据。这是最推荐的,因为不需要将现有数据库迁移到任何地方。

另外请参考我在此链接中的回答:

Don't wan't to replacing the old database when app is updated

希望对你有所帮助。

如果您需要更多帮助,请随时与我联系。

编辑:

如果您需要对包含一些数据的现有表进行更改,则需要执行以下步骤:

1) 重命名现有表

说 TableName 是 'TestTable',所以将表重命名为 'TestTableOld'

2) 创建一个名为“TestTable”的新表,其中包含您想要的新列和其他争吵。

3) 使用如下查询将数据从“TestTableOld”复制到“TestTable”:

Insert into TestTable('col1',col2'...'coln') Values Select col1, col2, col3,...'coln' From TestTableOld;

4) 删除表“TestTableOld”

遵循上述四步过程,因为这将用作更改语句,并且它会保留原始表中的所有数据。

希望你能明白。

【讨论】:

  • 先生,是否有任何可行的示例可以这样做,因为我对这个领域很陌生。
  • 没有一个可行的例子,但我已经实现了几个地方。您只需要在升级过程下以编程方式执行 Create Table 语句和其他语句,如 Update Statements 和 Insert Statements,就像在数据库中执行 select 语句查询一样。
  • 是的,我发现您的链接很有帮助,工作示例的任何链接?
  • 不,我已经在我的许多项目中实现了它,但是我没有这个教程链接。
  • 这意味着,如果我在文档目录中有数据库,那么我将检查它的数据库版本,如果版本与更新的 App 数据库不同,那么我需要以编程方式对我的数据库进行更改.但是如果我需要对已经有一些数据的表进行更改,我从 Sqlite 文档中读取到 sqlite 不支持 Alter table 语句。
猜你喜欢
  • 2016-09-06
  • 2016-12-16
  • 2021-09-21
  • 2016-09-04
  • 2013-04-09
  • 2023-03-12
  • 2015-05-28
  • 1970-01-01
  • 2013-10-09
相关资源
最近更新 更多