当你在调用_RecordsetPtr某个方法的时候?出现异常
这时候它处于什么样的状态中?
比如 
当调用_RecordsetPtr->update()?
这个时候网络正好断了?
这个时候_RecordsetPtr抛出异常?
但是它并没有处于一个良好的状态下:
close无法调用?
重新open也不行??
这时候因改如何处理呢???

解决方案 »

  1.   

    楼上说的是数据库更新的情况!
    我想问的是,这个时候,本地的_RecordsetPtr
    好像已经崩溃,更本无法使用
    连close命令都不行。
    难道只能 _RecordsetPtr=NULL,彻底释放com接口,
    重新创建???
      

  2.   


    这样如何:
    catch(_com_error& e)
    {
    ....
    }
    catch(...)
    {
    m_pRs.Release();
    m_pRs=NULL;
    InitConnections();//初始化_ConnectionPtr,然后处理m_pRs
    }
      

  3.   

    也就是说,只要出现操作异常,比如最为常有update的时候网络断线
    我们就必须重新创建RecordsetPtr
    连接,等等一些列烦人的事情!
    不知道那位懂java的,告知一下,jdbc是不是也是如此???
      

  4.   

    去查一下MSDN,看看是不是数据更新出现错误时,有相应的解决办法
    也就是说,看看回来的错误是什么而决定是否重新连接
      

  5.   

    _RecordsetPtr是一个智能指针,在析构的时候能够自动release的。
    所以
    catch(_com_error& e)
    {
    ....
    }
    中调用Close就可以了
      

  6.   

    出现上面的异常
    _RecordsetPtr->close();
    将导致内存访问违规!程序崩溃!
      

  7.   

    if(pRecordset->State)
       pRecordset->Close()
      

  8.   

    看起来!ADO只能将就用用了!
    是不是这样的!