检查ADO中的SQL连接状态

时间:2015-10-23 13:06:52

标签: c++ sql sql-server ado

我正在检查我的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属性的这个值是否可靠,或者我需要执行其他检查才能检测到这个状态?

1 个答案:

答案 0 :(得分:1)

连接中断时,state属性不会变为0(adStateClosed)。因此,即使在连接中断后,检查连接状态也将始终返回1(adStateOpen)。

没有办法立即检查。 SQL服务器的体系结构不允许这样做。

我建议你创建一个错误处理。

看起来确定连接丢失的唯一方法是尝试打开它并处理错误。