_ConnectionPtr m_pConnection;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open("Provider=MSDAORA.1;Data Source=orcl188;","hwdsw","ds2014",adModeUnknown);当程序第一次启动时,就连接数据库,且成功.这时程序进入正常运行状态,这时,我开一个线程时时检测,数据库连接是否中断,如果中断,我好在连接,请,如果判断m_pConnection,是否与数据库连接正常 
有人说用:
m_pConnection->GetState()== adStateOpen    adStateClosed = 0,
    adStateOpen = 1,
    adStateConnecting = 2,
    adStateExecuting = 4,
    adStateFetching = 8 我检测过了,这个只能说明本地的一个连接状态,如果网络突然中断,那么GetState()的状态还是adStateOpen,那么,如果网络中断,应该如何检测了,或是本机与数据库失去连接,又该如何检测了,

解决方案 »

  1.   

    测试网络,只能连接下试试了
    执行一条无关紧要的SQL语句,检测返回结果。
      

  2.   

    在一个循环里完成,
    m_pConnection->Open("Provider=MSDAORA.1;Data Source=orcl188;","hwdsw","ds2014",adModeUnknown); 
    如果这个操作有异常,就直接在做一次数据库连接!
    直到连接成功!推出就好了!
      

  3.   


    在一个循环里完成,
    m_pConnection->Open("Provider=MSDAORA.1;Data Source=orcl188;","hwdsw","ds2014",adModeUnknown);
    如果这个操作有异常,就直接在做一次数据库连接!
    直到连接成功!推出就好了! 
    帅哥,只能这样反复的连接呀,这样会不会太累了,有更好的方法吗
      

  4.   

    定时执行select sysdate from dual看执行过程是否出现异常。如果出现异常重连。
      

  5.   

    用OO4O方式连接Oracle???????怎么连接呀,能给实例吗