【问题标题】:How to Synchronize Android Database with an online SQL Server?如何将 Android 数据库与在线 SQL Server 同步?
【发布时间】:2012-07-02 18:31:05
【问题描述】:

我正在开发一个Android App,在Android平台提供的内置SQLite中存储不同类型的数据。

在应用程序中,我放置了一个“同步”按钮,用于在本地 SQLite 数据库与我服务器上的在线 SQL Server 数据库之间同步数据。

解决此问题的解决方法是什么?此功能可以在 Google 日历中找到,您可以在其中查看手机上的日历活动,当您添加新活动并同步数据时,您也可以通过访问您的在线帐户查看更新的数据。

注意:我不想在线集中我的数据库,因为我还想让移动用户能够在没有互联网连接的情况下使用该应用程序。

【问题讨论】:

  • 编写一个 Web 服务并从服务中获取更新的数据并更新您的 sqllite 数据库..反之亦然
  • 我以前用PHP写过一个webservice。根据您的实现,您可能只想关闭新事件并将它们放入您的 sqlite 数据库或添加/删除/修改。最好/唯一的方法是编写一个 Web 服务作为中间件来在您的应用程序和后端之间进行通信!
  • 你在 sqllite 和 mysql 服务器之间同步吗?
  • @user1042031 如果两者之间的互联网连接不可用,那么如何维护,以及如果我有 10000 条记录呢?

标签: android sql sqlite synchronization


【解决方案1】:

您应该查看 Android SDK 演示 (Transferring Data Using Sync Adapters) 中的 SampleSyncAdapter 项目。 它向您展示了如何进行同步“Android 风格”,无需用户交互,只需手动点击同步按钮即可。

除此之外,您还需要编写能够为您的 SyncAdapter 提供自上次提交以来所有更改的“增量”的服务器软件。最基本的方法是在您的应用程序中保留“上次同步”时间戳,该时间戳必须来自服务器,否则您可能会因为客户端和服务器之间的时间差异而遇到麻烦。将所有时间戳标准化为 GMT 或您选择的任何时区,但请坚持该决定。 如果您的应用需要在本地时间显示时间戳,那么您需要使用 Java Calendar 和 TimeZone 类将规范化的时间戳转换为本地时间。

您的应用还需要将更改的本地记录标记为“脏”,以便您的 SyncAdapter 知道它需要将这些更改或新记录上传到服务器。

您的服务器软件需要以下最低功能:

  • 更新现有记录功能
  • 添加新记录功能
  • 获取自上次同步以来的更新记录(应用提供时间戳)
  • 获取自上次同步以来的新记录(应用提供时间戳)

您可能还需要通读一些 Google API(如 Google 日历)以了解所有这些工作原理以及如何设计用于通信的服务器 API 接口。

【讨论】:

  • 完美答案!非常感谢。
  • @CodeZombie,已添加到问题中
  • 没有任何像样的图书馆可以为我们做这件事吗?
  • @Zapnologica 正是我的问题!没有数据同步功能是配置开关的 SQL 驱动程序库吗?就像我们在 noSQL 世界中一样,例如在 FireStore 中! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
相关资源
最近更新 更多