在 ADO 中检查 SQL 连接状态

Checking SQL connection state in 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: Physical connection is not usable [xFFFFFFFF].

Error number: 80004005 = Unable to open a logical session

状态 属性 的这个值是否可靠,或者我需要执行一些其他检查以检测此状态?

连接中断时状态属性不会变为0(adStateClosed)。所以检查连接状态总是return 1 (adStateOpen) 即使在连接中断后也是如此。

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

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

似乎确定连接已丢失的唯一方法是尝试打开它并处理错误。