Access ADO多连接时数据延迟无法同步无法及时更新的解决办法

WBOY
풀어 주다: 2016-06-07 15:42:52
원래의
1019명이 탐색했습니다.

这个问题由来已久,由于不是非常影响项目进度,所以一直没有重视。最近闲来,又遇到此问题,决心仔细研究一番。上网搜了半天,整整半天,没有发现比较通俗易懂的文章,没办法,看看微软的资料,自己动手吧,把这个解决过程记录下来,以供大伙参考。 问题描述

这个问题由来已久,由于不是非常影响项目进度,所以一直没有重视。最近闲来,又遇到此问题,决心仔细研究一番。上网搜了半天,整整半天,没有发现比较通俗易懂的文章,没办法,看看微软的资料,自己动手吧,把这个解决过程记录下来,以供大伙参考。


问题描述:

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添加的数据根本没法查出来,修改的数据也没更新,删除记录也依旧乖乖的呆在数据库里。

这种情况只有在使用两个或两个以上连接进行数据库操作时才会出现,只有一个连接是不会有这个问题的。但很多时候我们不得不使用多个连接同时操作数据,所以问题必须解决。


解决办法:

在执行增删改的 SQL语句时使用“事务Transaction” , 使用JRO引擎强制刷新 查询连接的 数据缓存。

#import "c:\program files\common files\system\ado\msjro.dll"

//开始事务
m_pConnection->BeginTrans();
//inster update delete操作 代码省略

//提交
m_pConnection->CommitTrans();

<pre class="brush:php;toolbar:false">//在查询前刷新缓存 刷新过后进行查询操作,数据就不会有延迟现象了。
BOOL CDBOperate::RefreshData()
{
	JRO::IJetEnginePtr jet(__uuidof(JRO::JetEngine));
	jet->RefreshCache(m_pConnection);
	return TRUE;
}
로그인 후 복사

로그인 후 복사
로그인 후 복사
通过上述代码,实现ACCESS多连接数据同步。

参考文章

http://support.microsoft.com/kb/200300

로그인 후 복사
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!