使用CRecordset的派生类。如果数据少的时候可以打开,数据多的时候就提示上面的错误。用CRecordset直接打开也是一样。 m_set.Open(CRecordset::forwardOnly,_T(m_SQL),CRecordset::readOnly);m_SQL="Select * from tab1"时候就不行,如果加上限制条件where field<100就行了。为什么???表中数据少的时候可以啊。我现在表中有8万多条记录。而且,也不应该是在Open的时候出错啊。如果纪录太多,我曾经在MoveNext()的时候,移动到2万条的时候内存不足,也不应该在Open的时候就出错啊??
难道ODBC规定打开的表中记录不得大于多少条?没有这么笨吧?郁闷啊,快救命啊!

解决方案 »

  1.   

    不要用Microsoft 提供的 oracle odbc driver (用 oracle 自己的最好)。
    有的时候需要在 open database 时指定 CDatabase::useCursorLib   。
      

  2.   

    我用的是Oracle自己的啊,microsoft提供的不能用,可能版本不兼容吧。其他记录集都用得好好的。就这个表纪录太多了,结果出问题了。
    我以前用没问题的。但是把纪录都倒进去后就不行了:((
      

  3.   

    可能,你的TNS连接时间设置的太短,默认好像是5分钟,你使用Database时间
    过长,数据库连接自动中断
      

  4.   

    to nbgyf:好像不是连接时间的问题。我m_set.Open()就提示错误了。是不是CRecordset的派生类不能打开视图?我要打开一张视图怎么办?
      

  5.   

    request 被终止,是程序的原因还是数据库的原因?谁知道吗?