【问题标题】:Checking SQL connection state in ADO在 ADO 中检查 SQL 连接状态
【发布时间】:2015-10-23 13:06:52
【问题描述】:

我正在检查我的 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 提供程序:物理连接不可用 [xFFFFFFFF]。

错误号:80004005 = 无法打开逻辑会话

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

【问题讨论】:

    标签: c++ sql sql-server ado


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好的,你证实了我的理论。我将尝试创建一种机制来可靠地检查连接状态。
    猜你喜欢
    • 2013-12-22
    • 2015-09-21
    • 2021-09-02
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 2015-04-26
    相关资源
    最近更新 更多