2011-04-06 36 views
1

我有一个MS Access数据库中的2个数据表。我的winform将首先执行UPDATE,然后是SELECT。奇怪的MS访问问题:选择后UPDATE不一致

UPDATE始终工作,即它正确地更新数据库正确的值从文本框。

SELECT连接2个数据表。大部分时间SELECT从连接中返回正确的元组。但偶尔,最后一个元组将包含部分数据,就像UPDATE没有在那个上执行一样。

这就是我所做的。 在方法A中,connection.open,更新查询,connection.close。

在方法B中,connection.open,选择query,connection.close。

我调用方法A,然后调用方法B.所以事情应该顺序发生。

如果我在两种方法之间放置睡眠(500),则竞争条件消失。但我不明白它来自哪里......

+0

迁移到SQL Server同步是不是一种选择? :-) – 2011-04-06 22:22:44

+1

你用什么来运行查询?如果停止关闭查询之间的连接,是否消除了竞态条件?尝试connection.open,更新查询,选择查询,connection.close。 – schizodactyl 2011-04-06 22:30:27

+3

如果您在方法A和方法B中重复使用单个连接(而不是独立打开和关闭每种方法中的连接),会发生什么情况? – HansUp 2011-04-06 23:24:19

回答

3

如果您使用的是ADO,那么它是JET的一个众所周知的“特性”。下面是来自微软的例子在底部的解决方案数据库

http://support.microsoft.com/kb/200300

+0

很好的引用。 +1 – 2011-04-09 23:57:30