CImgDB* dbSQL = new CImgDB(&(pTheApp->m_dbRaster));
if(dbSQL->Open(CRecordset::forwardOnly, (LPCTSTR )strSQL)==0)
{
AfxMessageBox("数据库连接错误!", MB_OK|MB_ICONINFORMATION);
return;
} 提示:数据被截断CImgDB是CRecordset的派生类,把CImgDB换成CRecordset后,则上面的语句能够通过。 但是只能以CRecordset::forwardOnly这样一种模式打开,不能以snapshot和dynaset模式打开。那如果我要执行dbSQL->MoveFirst以及dbSQL->MovePrev()等之类的操作就不行。why???????????
请专家给予解答。谢谢   

解决方案 »

  1.   

    CImgDB* dbSQL = new CImgDB(&(pTheApp->m_dbRaster)); 
    if(dbSQL->Open(CRecordset::snapshot, (LPCTSTR )strSQL)==0) 

    AfxMessageBox("数据库连接错误!", MB_OK|MB_ICONINFORMATION); 
    return; 
    } 或者
    if(dbSQL->Open(CRecordset::dynaset, (LPCTSTR )strSQL)==0) 

    AfxMessageBox("数据库连接错误!", MB_OK|MB_ICONINFORMATION); 
    return; 
    } 打开记录集时,速度奇慢。只有CRecordset::forwardOnly模式速度才比较快,我的后台数据库是oracle9i.
      

  2.   

    按你说的估计是你VC的连接方式问题,
    不过你先把sql贴上来,看看有没有可优化的地方
      

  3.   

    Sql: select * from table where fieldq1 = variable我的是图象数据库,前面的字段描述图象的属性,最后一个字段BLOB为图象数据,尺寸较大, 数据库为oracle 9i.做一些简单的CRecordSet的例子,都没有出现上面的问题,是不是和图象数据库有关?