环境:vc6.0 mdac2.8 ;
问题:在成功建立连接后,如果连接由于网络故障或者数据库当机断开,如何保证能够在程序中判断并自动重新连接?
这个问题在网上有很多人问,一直没有一个明确的答案。我测试了一下,总算找到一个基本可行的方法。
_ConnectionPtr m_pConnection;
m_pConnection.CreateInstance( __uuidof(Connection) );
m_pConnection->Open(...);
if (执行sql或者打开recordset失败)
{
if (m_pConnection->GetState() != adStateClosed)
m_pConnection->Close();
//下面的语句是重点!要把连接占用的资源彻底释放掉,否则再次连接的时候,不管是什么情况,都会正确返回,实际上根本无法连接!Connection的状态是adStateOpen! 执行任何语句都不会成功。
m_pConnection.Release();
::CoUninitialize();
::CoInitialize(NULL);
m_pConnection.CreateInstance( __uuidof(Connection) );
//到这里为止上面的代码一个都不能少。
//重新连接
m_pConnection->Open(...);
}[@more@]