【问题标题】:Can I share SQLite database between a desktop application and my iPhone application我可以在桌面应用程序和我的 iPhone 应用程序之间共享 SQLite 数据库吗
【发布时间】:2011-03-29 23:12:57
【问题描述】:

我正在编写一个包含两个部分的应用程序。桌面应用程序在桌面上运行(可能是 AIR 应用程序)和在 iPhone 上运行的 iPhone 应用程序。我是 iPhone 开发新手。

两个应用程序都可以使用完全相同的 sqlite 数据库。理想情况下,我想以某种方式将 sqlite 数据库文件复制到移动应用程序的 Documents 文件夹并在那里使用它,反之亦然,利用 iTunes 同步。

我该如何做呢?有没有更好的方法在手机和桌面应用程序之间运行同步?如果是这样,有什么例子可以说明如何最好地做到这一点?

我发现的大多数解决方案都假设数据库以单独的格式存储,例如 MySQL,并且需要以某种方式对数据进行序列化和反序列化。我只是想尝试使用相同的文件并将文件复制过来。

【问题讨论】:

  • 我想这里的另一件事是如上所述我对 iPhone 开发很陌生。我可以将这个问题重新表述为如何在两个应用程序之间进行最佳通信?我应该在桌面应用程序中设置一个网络服务器,然后让手机应用程序通过 http 连接到它吗?或者我可以通过 iTunes 访问手机数据库吗?如果是这样,我该怎么做?

标签: iphone cocoa-touch sqlite sync


【解决方案1】:

SQLite 是一个单用户数据库。如果你走“复制数据库”的路线,那么你就有丢失数据的风险。如果桌面用户添加数据,iOS用户添加数据,复制文件时会丢失某人的数据。

您可以实现自己的“同步”算法来识别数据库之间的更改并使它们保持同步。这可能会很痛苦,但这是一种常见的解决方案,也是我推荐的。我已经为桌面/iOS 应用程序这样做了。

您可以选择使用数据库服务器,但这需要网络访问才能连接到它。

【讨论】:

  • 那么您建议我如何在两个应用程序之间进行通信?宁愿不需要互联网访问。
  • 正如我所说,我会推荐“同步”方法,但它要求两个设备至少在同一个 wifi 网络上。如果这很重要,他们将不需要互联网访问。
猜你喜欢
  • 2011-09-16
  • 2011-03-30
  • 1970-01-01
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
  • 2023-03-21
相关资源
最近更新 更多