如何使Android数据库与在线SQL Server同步?

我正在开发一个Android应用程序,在Android平台提供的内置SQL Light中存储不同types的数据。

在应用程序内部,我放置了一个“同步”button,它应该同步本地SQL Light数据库与我的服务器上的在线SQL Server数据库之间的数据。

什么是解决这个问题的方法? 您可以在Google日历中find此function,您可以在其中查看移动设备上的日历活动,当您添加新活动并同步数据时,也可以通过转到在线帐户查看更新后的数据。

注意:我不想将我的数据库集中到网上,因为我也想给移动用户在没有互联网连接的情况下使用应用程序的能力。

谢谢。

您应该查看Android SDK演示中的SampleSyncAdapter项目( 使用Sync适配器传输数据 )。 它向您展示了如何进行同步“Android风格”,通过手动点击同步button,无需用户交互。

最重要的是,您需要编写能够为您的SyncAdapter提供自上次提交以来所有更改的“增量”的服务器软件。 最基本的方法是在你的应用中保留一个“最后同步”的时间戳,这个时间戳必须来自服务器,否则你可能因为客户端和服务器之间的时间差异而陷入困境。 将所有时间标记为GMT或所选时区,但坚持这一决定。 如果您的应用程序需要在本地时间显示时间戳,则需要使用Java日历和TimeZone类将归一化时间戳转换为本地时间。

您的应用程序还需要将已更改的本地logging标记为“脏”,所以SyncAdapter知道它需要将这些更改或新logging上载到服务器。

您的服务器软件需要以下function:

  • 更新现有的loggingfunction
  • 添加新的loggingfunction
  • 自上次同步以来获取更新logging(应用程序提供时间戳)
  • 自上次同步以来获取新logging(应用程序提供时间戳记)

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