Access ADO多连接时数据延迟无法同步无法及时更新的解决办法
2015-01-27 16:19
411 查看
这个问题由来已久,由于不是非常影响项目进度,所以一直没有重视。最近闲来,又遇到此问题,决心仔细研究一番。上网搜了半天,整整半天,没有发现比较通俗易懂的文章,没办法,看看微软的资料,自己动手吧,把这个解决过程记录下来,以供大伙参考。 问题描述: 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语句时使用[code]“事务Transaction” , 使用JRO引擎强制刷新 查询连接的 数据缓存。
[cpp] view plaincopy#import "c:\program files\common files\system\ado\msjro.dll"
//开始事务
m_pConnection->BeginTrans();
//inster update delete操作 代码省略
//提交
m_pConnection->CommitTrans();
<pre name="code" class="cpp">//在查询前刷新缓存 刷新过后进行查询操作,数据就不会有延迟现象了。
BOOL CDBOperate::RefreshData()
{
JRO::IJetEnginePtr jet(__uuidof(JRO::JetEngine));
jet->RefreshCache(m_pConnection);
return TRUE;
}</pre><br>
<pre></pre>
通过上述代码,实现ACCESS多连接数据同步。
<p></p>
<p></p>
<p>参考文章</p>
<p><a href="http://support.microsoft.com/kb/200300">http://support.microsoft.com/kb/200300</a></p>
<p></p>
<pre></pre>
[/code]
相关文章推荐
- Access ADO多连接时数据延迟无法同步无法及时更新的解决办法
- 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题
- Xmarks 无法同步的暂时解决办法 ip更新
- 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题
- Chromium书签同步无法连接到服务器的解决办法
- 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题 (转)
- ADO错误: 无法为更新定位行。一些值可能已在最后一次读取后已更改解决办法
- 错误711:操作无法完成,因为它无法及时启动远程访问连接管理服务 宽带连接提示错误711的解决办法
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
- VNN连接时网络重名,无法连接解决办法!
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
- C#ADO连接修改Paradox表时“操作必须使用一个可更新的查询”错误的处理办法
- IE无法上网连接的解决办法
- windows无法更新的解决办法
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
- Access中"操作必须使用一个可更新的查询"错误的解决办法
- DBNMPNTW]Connectionopen(CreateFile()) DELPHI开发的ADO应用程序连接SQL SERVER失败的解决办法