天天看點

Access ADO多連接配接時資料延遲無法同步無法及時更新的解決辦法

這個問題由來已久,由于不是非常影響項目進度,是以一直沒有重視。最近閑來,又遇到此問題,決心仔細研究一番。上網搜了半天,整整半天,沒有發現比較通俗易懂的文章,沒辦法,看看微軟的資料,自己動手吧,把這個解決過程記錄下來,以供大夥參考。

問題描述:

ADODB::_ConnectionPtr    m_pConnection1;

ADODB::_ConnectionPtr    m_pConnection2;

ADODB::_RecordsetPtr    m_pRecordset1;

ADODB::_RecordsetPtr    m_pRecordset2;

初始化過程略去。。。。。。

當使用

m_pRecordset1->Open(pSql ,m_pConnection1.GetInterfacePtr(),ADODB::adOpenDynamic,ADODB::adLockOptimistic,ADODB::adCmdText);

進行INSERT、UPDATE、Delete 操作後,立即用m_pConnection2 和m_pRecordset2 對更新的表進行查詢,發現剛剛m_pConnection1添加的資料根本沒法查出來,修改的資料也沒更新,删除記錄也依舊乖乖的呆在資料庫裡。

這種情況隻有在使用兩個或兩個以上連接配接進行資料庫操作時才會出現,隻有一個連接配接是不會有這個問題的。但很多時候我們不得不使用多個連接配接同時操作資料,是以問題必須解決。

解決辦法:

[cpp] 
    ​​view plain​​​
    ​​​copy​​
1. #import "c:\program files\common files\system\ado\msjro.dll"
2. 
3. //開始事務
4. m_pConnection->BeginTrans();
5. //inster update delete操作 代碼省略
6. 
7. //送出
8. m_pConnection->CommitTrans();
9. 
10. <pre name="code" class="cpp">//在查詢前重新整理緩存 重新整理過後進行查詢操作,資料就不會有延遲現象了。
11. BOOL
12. {
13. JRO::IJetEnginePtr jet(__uuidof(JRO::JetEngine));
14. jet->RefreshCache(m_pConnection);
15. return
16. }</pre><br>
17. <pre></pre>
18. 通過上述代碼,實作ACCESS多連接配接資料同步。
19. <p></p>
20. <p></p>
21. <p>參考文章</p>
22. <p><a href="http://support.microsoft.com/kb/200300">http://support.microsoft.com/kb/200300</a></p>
23. <p></p>
24. <pre></pre>