在 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 服务器的架构不允许这样做。
我建议你创建一个错误处理。
似乎确定连接已丢失的唯一方法是尝试打开它并处理错误。
我正在检查我的 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 服务器的架构不允许这样做。
我建议你创建一个错误处理。
似乎确定连接已丢失的唯一方法是尝试打开它并处理错误。