我正在开发一个Android应用程序,在Android平台提供的内置SQLite中存储不同类型的数据.

在应用程序内部,我放置了一个"Sync"按钮,该按钮用于在本地SQLite数据库和我服务器上的在线SQL Server数据库之间同步数据.

解决这个问题的方法是什么?这项功能可以在谷歌日历中找到,你可以在手机上查看日历上的事件,当你添加新事件并同步数据时,你也可以通过在线帐户查看更新的数据.

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

推荐答案

您应该看看Android SDK演示(Transferring Data Using Sync Adapters)中的SampleSyncAdapter项目.

除此之外,您还需要编写服务器软件,该软件能够为SyncAdapter提供自上次提交以来所有更改的"增量".最基本的方法是在应用程序中保留"上次同步"的时间戳,该时间戳必须来自服务器,否则您可能会因为客户端和服务器之间的时间差而陷入麻烦.将所有时间戳标准化为GMT或您 Select 的任何时区,但坚持这个决定.

您的应用程序还需要将更改的本地记录标记为"脏",以便SyncAdapter知道需要将这些更改的或新的记录上载到服务器.

服务器软件至少需要以下功能:

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

您可能还想阅读一些Google API(如Google Calendar),了解所有这些是如何工作的,以及如何为通信设计服务器API接口.

Sql相关问答推荐

如何在一个范围内进行分组.""范围值在范围表中定义

为什么TRY_CONVERT返回一个XML验证错误而不是NULL?

来自按PostgreSQL分组的最小日期

从结果SQL查询中排除空值

更正用于判断错误组合的SQL

如何在T-SQL中编写row_number的WHERE子句?

更改重复值的情况

根据日期 Select ID 的上一条记录

在 SQL Server 中合并两个 XML 列

统计重复记录的总数

在特定条件下使用 LAG,确定要采用什么 LAG 值?

使用多个数据库调用重载 CQRS 模式

如何在 JSONB 数组的每个对象中添加新的键值对- PostgreSQL

PostgreSQL-用第一个非空填充以前的值

正则表达式忽略特定数据部分的分隔符

在给定的日期范围内填写缺失的日期

如何显示最常引用条目的详细信息

字符串从更改到表列和查询中的一行的转换错误

创建一个将层次 struct 级别放入列中的查询

使用一组值进行分组和计数