积极答复者
C#如何判断Access数据库有内容更新

问题
答案
-
我想肖小勇的意思是这样:
1)建立两个数据库的连接,access和SQL server(至于是local还是remote的,不影响)。
2)update(包括add,delete和update)access,并相应的记录下updateTime的值(最好每次批量update时设置相同的时间或者你获取当前在access中的最近时间,记作oldUpdateTime);
3)在access中SELECT 那些时间比记录时间更近的时间(也就是你刚刚update的):
SELECT * FROM table WHERE UpdateTime > oldUpdateTime
获取最近update的数据;
4)将获取的数据更新到SQL server中。
这里有个问题是关于delete的,因为delete之后,数据不再存在,因此你没法知道你delete的数据到底是哪几条,自然也就没法去SQL server中删除了,因此delete需要单独拿出来进行处理。可以在delete之前先将要delete的数据SELECT出来。
两个数据库之间的同步操作,最要紧的问题就是数据的同步,这方面需要多下些功夫去考虑下。
-
你好!
具体方法我上面说了络绎也做了详细的解释,这里我再补充一下:
1. 没有必要几秒就同步一次。
2. 同步使用后台线程来做,不要影响界面操作。
3. 怎么知道Access有新数据?
a. 每次同步时都保存最后一次的同步的最大时间(UpdateTime)。新数据 SQL 语句条件为 WHERE UpdateTime > 上次同步的时间
b. 在 Access 表中增加字段,标实哪些已同步过。增、删、改操作后将这个字段重置为未同步。
c. 还有一些需求,在同步完成后会删除 access 中的数据。那么只有 access 中有数据则都是需要同步的。
知识改变命运,奋斗成就人生!- 已标记为答案 hkstb 2010年4月22日 13:34
全部回复
-
我想肖小勇的意思是这样:
1)建立两个数据库的连接,access和SQL server(至于是local还是remote的,不影响)。
2)update(包括add,delete和update)access,并相应的记录下updateTime的值(最好每次批量update时设置相同的时间或者你获取当前在access中的最近时间,记作oldUpdateTime);
3)在access中SELECT 那些时间比记录时间更近的时间(也就是你刚刚update的):
SELECT * FROM table WHERE UpdateTime > oldUpdateTime
获取最近update的数据;
4)将获取的数据更新到SQL server中。
这里有个问题是关于delete的,因为delete之后,数据不再存在,因此你没法知道你delete的数据到底是哪几条,自然也就没法去SQL server中删除了,因此delete需要单独拿出来进行处理。可以在delete之前先将要delete的数据SELECT出来。
两个数据库之间的同步操作,最要紧的问题就是数据的同步,这方面需要多下些功夫去考虑下。
-
access是支持触发器的,只是不知道这个触发器不知道能不能update另一个service(SQL server)。照你的意思?不想每几秒就SELECT一次,可是你要获得数据update的数据,SELECT是必须的吧。我认为两个做法:
1)你在update access数据的时候同时update sql server数据,两个互不相关,不过不出问题的话数据会保持同步;
2)你update access时不管sql server,设置一个定时器,每隔固定的时间来SELECT一次。这种做法无法解决DELETE的同步【你可以添加一个flag来标记是否删除,也就是说其实access里数据不删除,只是被标记为删除,而在sql server中再真实的删除数据】。
你有什么想法,也share一下。
- 已编辑 络绎 2010年4月22日 12:06 Add more details
-
你好!
具体方法我上面说了络绎也做了详细的解释,这里我再补充一下:
1. 没有必要几秒就同步一次。
2. 同步使用后台线程来做,不要影响界面操作。
3. 怎么知道Access有新数据?
a. 每次同步时都保存最后一次的同步的最大时间(UpdateTime)。新数据 SQL 语句条件为 WHERE UpdateTime > 上次同步的时间
b. 在 Access 表中增加字段,标实哪些已同步过。增、删、改操作后将这个字段重置为未同步。
c. 还有一些需求,在同步完成后会删除 access 中的数据。那么只有 access 中有数据则都是需要同步的。
知识改变命运,奋斗成就人生!- 已标记为答案 hkstb 2010年4月22日 13:34