本帖最后由 thriston 于 2015-03-02 22:59:51 编辑

解决方案 »

  1.   

    你可以用try...catch捕获一下com错误和内存错误,打印一下错误描述,看看是什么错误
    try
    {
        while(!ISEOF())
        {
          movenext();
          //////dosomething
        }
    }
    catch(_com_error e)
    {
        printf(_T("%s"),e->Description());
    }
      

  2.   

    数据库数据如果是太多了,那么sql查询的时候就不要一次性全查出来,分页查询
      

  3.   

     今天做了一下实验,发现
    move()调用的是
    AFX_ODBC_CALL(::SQLExtendedFetch(m_hstmt,wFetchType,
    nRow,pdwRowsFetched,m_rgRowStatus));出错的时候返回值是SQL_SUCCESS_WITH_INFO
    让我采用SQLError 获取错误码,但是VC自带的.cpp不让修改,我再研究下怎么获取错误码。关于:CDBException  运行不到捕获错误,就出错了。
      

  4.   

    去catch _com_error 看能不能捕捉到