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