我通過OleDB在表中插入幾行,並立即選擇插入的行。Access 2007 - 插入和即時SELECT不檢索插入的數據
我不能以這種方式檢索行,我必須等待約。 3-5秒。然後插入的行出現在表格中。
我在數據庫本身中觀察到了這種行爲,我通過OleDB插入了行並觀察了Access中打開的表。排在3-5秒後出現在桌上。
訪問緩衝區行嗎?我是否必須通過OleDB發送刷新或提交等?
任何建議將是非常有益的。
(請不要問我爲什麼不通過我的業務邏輯或其他方式解決這個....)
我通過OleDB在表中插入幾行,並立即選擇插入的行。Access 2007 - 插入和即時SELECT不檢索插入的數據
我不能以這種方式檢索行,我必須等待約。 3-5秒。然後插入的行出現在表格中。
我在數據庫本身中觀察到了這種行爲,我通過OleDB插入了行並觀察了Access中打開的表。排在3-5秒後出現在桌上。
訪問緩衝區行嗎?我是否必須通過OleDB發送刷新或提交等?
任何建議將是非常有益的。
(請不要問我爲什麼不通過我的業務邏輯或其他方式解決這個....)
我做了一些測試,那裏似乎是一些緩衝回事ACE的OleDb 。我發現
如果我做了一些INSERT,然後立即在同一個OleDbConnection上做了一個SELECT,那麼新的行就立即可用了。
如果我開了兩個OleDbConnection的對象,插在con1
,然後立即選擇了開con2
新行花了大約5秒鐘,成爲可用的con2
連接上。
如果我開了兩個OleDbConnection的對象,插在con1
,做con1.Close()
,然後立即對con2
新行是可用馬上選中。
因此,似乎關閉OleDbConnection具有「刷新」寫入的效果,並使其更快可用於其他連接。我的猜測是,OleDb隱式緩衝(或「批量」)更新,因爲ACE/Jet是一個共享文件數據庫,它試圖減少對數據庫文件的爭用。
(當我使用SQL Server做了同樣的測試有情況之間沒有顯著差異,當我關閉con1
和的情況下,當我離開它打開。在任何情況下,新紀錄是可立即。)