2013-06-11 37 views
2

我通過OleDB在表中插入幾行,並立即選擇插入的行。Access 2007 - 插入和即時SELECT不檢索插入的數據

我不能以這種方式檢索行,我必須等待約。 3-5秒。然後插入的行出現在表格中。

我在數據庫本身中觀察到了這種行爲,我通過OleDB插入了行並觀察了Access中打開的表。排在3-5秒後出現在桌上。

訪問緩衝區行嗎?我是否必須通過OleDB發送刷新或提交等?

任何建議將是非常有益的。

(請不要問我爲什麼不通過我的業務邏輯或其他方式解決這個....)

回答

3

我做了一些測試,那裏似乎是一些緩衝回事ACE的OleDb 。我發現

  1. 如果我做了一些INSERT,然後立即在同一個OleDbConnection上做了一個SELECT,那麼新的行就立即可用了。

  2. 如果我開了兩個OleDbConnection的對象,插在con1,然後立即選擇了開con2新行花了大約5秒鐘,成爲可用的con2連接上。

  3. 如果我開了兩個OleDbConnection的對象,插在con1,做con1.Close(),然後立即對con2新行是可用馬上選中。

因此,似乎關閉OleDbConnection具有「刷新」寫入的效果,並使其更快可用於其他連接。我的猜測是,OleDb隱式緩衝(或「批量」)更新,因爲ACE/Jet是一個共享文件數據庫,它試圖減少對數據庫文件的爭用。

(當我使用SQL Server做了同樣的測試有情況之間沒有顯著差異,當我關閉con1和的情況下,當我離開它打開。在任何情況下,新紀錄是可立即。)