以一种方式同步android sqlite db和sql server

时间:2015-03-10 14:39:26

标签: android sql-server sql-server-2008 sqlite

我正在开发一个Android应用程序,它在我的设备上有sqlite数据库,在主机上有sql server db,android设备包含主数据库的很小一部分,所以我不想复制整个数据库。我有自己的网络服务器,可以在数据库之间上传/下载数据, 我的问题是我如何知道主数据库的哪个部分被更改为仅下载更改的条目?

1 个答案:

答案 0 :(得分:0)

一种有用的技术是使用rowversion数据类型。您可以将其视为服务器更改编号。您可以使用MIN_ACTIVE_ROWVERSION()功能获取当前更改编号。然后从上次下载的更改编号发生的更改中查询到当前更改编号,最后将当前更改编号存储为本地SQLite数据库中最后下载的更改编号。

这样的事情:

DECLARE @CurrentServerChange binary(8)
SET @CurrentServerChange = MIN_ACTIVE_ROWVERSION()

SELECT * FROM Table1
WHERE 
    RecordVersion >= @LastDownloadedChangeNumber
    AND RecordVersion < @CurrentServerChange 

SELECT * FROM Table3
WHERE 
    RecordVersion >= @LastDownloadedChangeNumber
    AND RecordVersion < @CurrentServerChange 

SELECT @CurrentServerChange AS CurrentServerChange

我认为RecordVersion列的类型为rowversion