2011-04-06 62 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