正常情况下用pConnection->State == adoStateOpen可以正确判断出与数据库的连接状态,但是如果数据库服务异常停止以后,pConnection->State 依然为adoStateOpen,所以通过pConnection->State == adoStateOpen来判断pConnection是否处于连接状态似乎行不通?请教如何正确的判断一个pConnection是否处于连接状态。

解决方案 »

  1.   

    同pConnection一起声明一个成员变量,
    如:BOOL m_bConnection;
    初值为FALSE;
    成功连上后设TRUE;
    这方法可能比你的方法有效。。
      

  2.   

    IConnectionPointContainer* pCPC = NULL;
    IConnectionPoint* pCP = NULL; hr =  pCPC->FindConnectionPoint(__uuidof(ADODB::ConnectionEvents), &pCP);//查找指定的连接点
    pCPC->Release();
    if (FAILED(hr))
    return hr;
      

  3.   

    同pConnection一起声明一个成员变量,如:BOOL m_bConnection;初值为FALSE;成功连上后设TRUE;
    ----------------------------
    你加了等于没加,断开后你的状态还是没变啊。