這個問題由來已久,由于不是非常影響項目進度,所以一直沒有重視。最近閑來,又遇到此問題,決心仔細研究一番。上網(wǎng)搜了半天,整整半天,沒有發(fā)現(xiàn)比較通俗易懂的文章,沒辦法,看看微軟的資料,自己動手吧,把這個解決過程記錄下來,以供大伙參考。 問題描述
這個問題由來已久,由于不是非常影響項目進度,所以一直沒有重視。最近閑來,又遇到此問題,決心仔細研究一番。上網(wǎng)搜了半天,整整半天,沒有發(fā)現(xiàn)比較通俗易懂的文章,沒辦法,看看微軟的資料,自己動手吧,把這個解決過程記錄下來,以供大伙參考。
問題描述:
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 對更新的表進行查詢,發(fā)現(xiàn)剛剛m_pConnection1添加的數(shù)據(jù)根本沒法查出來,修改的數(shù)據(jù)也沒更新,刪除記錄也依舊乖乖的呆在數(shù)據(jù)庫里。
這種情況只有在使用兩個或兩個以上連接進行數(shù)據(jù)庫操作時才會出現(xiàn),只有一個連接是不會有這個問題的。但很多時候我們不得不使用多個連接同時操作數(shù)據(jù),所以問題必須解決。
解決辦法:
在執(zhí)行增刪改的 SQL語句時使用“事務Transaction” , 使用JRO引擎強制刷新 查詢連接的 數(shù)據(jù)緩存。
#import "c:\program files\common files\system\ado\msjro.dll" //開始事務 m_pConnection->BeginTrans(); //inster update delete操作 代碼省略 //提交 m_pConnection->CommitTrans();//在查詢前刷新緩存 刷新過后進行查詢操作,數(shù)據(jù)就不會有延遲現(xiàn)象了。 BOOL CDBOperate::RefreshData() { JRO::IJetEnginePtr jet(__uuidof(JRO::JetEngine)); jet->RefreshCache(m_pConnection); return TRUE; }
參考文章
http://support.microsoft.com/kb/200300
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com