我正在检查我的SQL连接状态:
_ConnectionPtr m_pADOConnection;
// Connection is created and working fine...
// Now I disable network adapter (from Control panel)
if( (pApp->m_pConnection->GetState() == adStateOpen) )
{
// I got here every time....
}
问题是,每次 adStateOpen 时,即使连接确实无法正常工作,也会出现问题!
如果我尝试执行查询或执行任何操作,则会失败,主要是使用
SMux Provider:物理连接不可用[xFFFFFFFF]。
或
错误号:80004005 =无法打开逻辑会话
State属性的这个值是否可靠,或者我需要执行其他检查才能检测到这个状态?
答案 0 :(得分:1)
连接中断时,state属性不会变为0(adStateClosed)。因此,即使在连接中断后,检查连接状态也将始终返回1(adStateOpen)。
没有办法立即检查。 SQL服务器的体系结构不允许这样做。
我建议你创建一个错误处理。
看起来确定连接丢失的唯一方法是尝试打开它并处理错误。