我使用ODBC方式连接数据库,导出数据。使用CDatabase打开一个数据库连接,我在以后的程序一直在使用这个数据库连接,在导出少量数据的时候很顺利,但是在导出大量数据的时候时间很长,执行过一段时间以后,CRecordset的Open函数就会抛出异常,我跟踪代码是在void CRecordset::PrepareAndExecute()中抛出的一个异常,原因是其中的一个变量nRetCode为经过一段代码的执行由0编成的-1。  我不知道产生这个问题的原因是什么,是时间的问题吗?  但是我试过不同的数据源这个出错的时间还不一样,有的十几秒就出错了,有的都导出二十多分钟才出错。而且在出错的地方,那个数据库连接使用IsOpen()判断还是返回值是正常的。真不明白是怎么回事,请大家帮助讲解一下。

解决方案 »

  1.   

    我一直用ODBC连接数据库,好像没有出现过这种问题,不知你采用哪种数据库,是不是数据库的缓冲区开的太小了?
      

  2.   

    我一直用oracle和access ,从未遇到过这种情况。
      

  3.   

    我连接的是其他机器上的sqlserver6.5,是数据库缓冲区问题吗?
      

  4.   

    这个问题的原因我找到了,使数据库服务器的tempdb的空间耗尽了,在数据源配置的时候,不设置那个复选框就可以了  建立存储过程的那个。谢谢大家了。