MFC下CRecordSet类movenext到一定程度但是没到末梢就会报错

MFC下CRecordSet类movenext到一定程度但是没到末尾就会报错
本帖最后由 thriston 于 2015-03-02 22:59:51 编辑
MFC用的VC2008
数据库用的SQL Server2005

我是做数据提取,需要将数据提取出来存到文件,使用的ODBC的方式
CRecordSet表类的字段有一个是text类型,存的数据时10000字节。
在提取到大概几万条记录的时候就会报错。


while(!ISEOF())
{
  movenext();
  //////dosomething
}

记录集并没有到最后一条记录,但是就会报错。感觉是某个缓冲区没有开够的样子,查了一些时间没有查到类似的问题,有人遇到过类似的问题吗?

------解决思路----------------------
你可以用try...catch捕获一下com错误和内存错误,打印一下错误描述,看看是什么错误
try
{
    while(!ISEOF())
    {
      movenext();
      //////dosomething
    }
}
catch(_com_error e)
{
    printf(_T("%s"),e->Description());
}
------解决思路----------------------
数据库数据如果是太多了,那么sql查询的时候就不要一次性全查出来,分页查询
------解决思路----------------------
捕捉 CDBException 
------解决思路----------------------
数据量太大了确实用分页查询比较好