C# 如果数据是新的,则仅从web服务更新本地数据库中的数据

C# 如果数据是新的,则仅从web服务更新本地数据库中的数据,c#,android,web-services,sqlite,asp.net-web-api2,C#,Android,Web Services,Sqlite,Asp.net Web Api2,我已经编写了一个C#WebAPI2Web服务,我想在我编写的android应用程序中检索这些数据 我希望在我的android设备上有一个本地SQL数据库,用于存储来自web服务的数据 无论何时在我的android应用程序中使用数据,我都希望检查本地数据库数据是否是最新的,如果不是,那么我希望从web服务检索最新的数据 我想到以下几点: 每次将数据保存到本地数据库中时,将一个整数值保存为更新号 每当需要数据时,从本地数据库检索最新的更新号,使用此更新号向web服务发送请求,并且仅当web服务数据具

我已经编写了一个C#WebAPI2Web服务,我想在我编写的android应用程序中检索这些数据

我希望在我的android设备上有一个本地SQL数据库,用于存储来自web服务的数据

无论何时在我的android应用程序中使用数据,我都希望检查本地数据库数据是否是最新的,如果不是,那么我希望从web服务检索最新的数据

我想到以下几点:

  • 每次将数据保存到本地数据库中时,将一个整数值保存为更新号
  • 每当需要数据时,从本地数据库检索最新的更新号,使用此更新号向web服务发送请求,并且仅当web服务数据具有更新的更新号时才返回数据
  • 这样行吗?有没有比我的上述想法更好的方法来解决这个问题?是否存在可能出现的缺点或错误


    提前谢谢。

    我对我的同步算法做了完全相同的事情。是这样的。 我的web服务方法获取datetime参数,web服务只发送在此之后创建或修改的对象

    在移动端,我保留同步开始时间,对于每次同步,我发送以前的同步开始时间。(顺便说一下,我在同步开始前向服务器询问日期)


    我不保留同步结束时间,因为一些数据可能在同步开始后被修改。

    我在我的同步适配器中做了类似的事情,用户单击同步,它从web提要获取数据,并只将更新的数据存储到sqlite中


    请参阅
    SyncAdapter.java
    上提供的SyncAdapter示例文件“这能正常工作吗?”:实际上这是唯一简单的方法。是否有更复杂的方法来实现您推荐的预期结果?我更倾向于保存上次更新的日期时间,将此信息传递回web服务,并允许web服务检索自此日期起已更新的记录。@user3736648:为什么需要更复杂的内容?只要你的应用程序保持最后一个已知的版本,并且web服务器在任何更改时可靠地更新其版本号,那么一切都会正常工作。正如BenjaminPaul指出的,可以使用时间戳而不是版本号,但这取决于您是打算下载完整的数据库数据还是只是增量下载更改-这会变得更加复杂,尤其是在数据删除和/或数据库架构更改的情况下。我只打算增量下载更改。