我有二个库,,,我需要从服务器获取数据到客户端有一个情况:客户端并不是时时开着的,需要使用时才会打开
我现在的做法是我在客户端库表里会记住最后更新数据的时候(具体方法不详细说明了)
然后每次开机时检索这个时间,,从这个时间接着下去更新数据这会出现一种情况:假如我9月1号开机过,,然后关机了,,那我库表里保存的数据最后更新记录假如是9.1号的
假如我等到10.1再开机,,系统检查到上次更新数据到9.1号,会自动从服务器更新9.1以后的数据,,因为时间比较长可能数据比较多,
如果要更新到10.1号,可能要半天,,
我现在想假如客户端开机检查到已经超过三天未更新数据,那么就更新最新的数据,比如24小时的,然后再补上历史的,,但是这个机制我还没想到如何来实现,,,请各位大佬,帮忙出个对策

解决方案 »

  1.   

    本地记录需要更新的记录条数,假如id是顺序的,就记录下需要更新的最大id和最小id,然后开始更新数据库,然后从靠前记录开始往比较久远的记录开始更新,并且记录当前更新id(可以每隔一段时间记录,可以随时记录,各有缺点)。
      

  2.   

    ***********时间逆向更新方法
    例:
    假如我9月1号开机过,,然后关机了,,那我库表里保存的数据最后更新记录假如是9.1号的 
    假如我等到10.1再开机,,系统检查到上次更新数据到9.1号,会自动从服务器更新9.1以后的数据,....
    在更新数据时.从10.1号开始更新.A=>再更新9.30号的数据.B=>再更新9.29号数据........N=>更新9.2号数据.到此就更新完毕了.
    从A到N的过程中可能服务器上并不是没天都有数据,可能需要程序检索该天是否有数据,如果该天没有数据,就不在更新(有点象废话,就是提示一下程序检查一下),...
    从A到N的过程中设置控制模块,功能就是在从A到N断更新中,可以设置"断点"停止更新..以后有时间在继续更新剩余的全部...
    ok...
      

  3.   

    如果数据库之间能互相连接的话,可以用Job来同步。
    如果不能可以考虑楼上的做法,在每条记录上加两个字段,一个是添加时间(这部分数据是直接添加到新表的),一个是最后最后操作时间(如果二者不一致是需要更新而不是添加的)。
      

  4.   

    我自己的做法是利用dataset本身的Merge方法,合并两个dataset,然后update这个dataset 
      

  5.   

    1.在本机数据库,设置一个表,表结构:表名,断点ID,
    2.开启程序的时候检查表名和断点ID,如果断点ID小于远程数据库ID,则更新该表.循环更新整个表.
    就OK.