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