我用oledb连接到数据库当网路断开等情况时,如何监控连接中断

解决方案 »

  1.   

    我也碰到过类似的问题,用connection的GetState()函数只能得到状态,这个状态是不真实的,当网络断开后还是得到连接状态,我的解决方法是在做数据库操作之前先做一个小的操作,比如取得数据库表数量以确定网络是否连通。
    try
    {
    if (!(m_Connection->GetState()))
    {
    if (!Connect())
    return FALSE;
    }
    else
    m_Connection->OpenSchema(adSchemaTables);
    return TRUE;
    }
    catch(_com_error &e)
    {
    if (e.Error() == DB_E_NOTABLE)
    {
    DisconnectFromDB(m_Connection);
    if (!Connect())
    return FALSE;
    else
    return TRUE;
    }
    else
    return FALSE;
    }
    Connect()和DisconnectFromDB()函数为自己写的连接和断开连接函数。
      

  2.   

    关注,我也想知道,有何简单的方法可以检测底层TCP连接状态