我有如下代码
  _RecordsetPtr  rs;
 rs.CreateInstance("ADODB.RECORDSET");
 .......
 rs->Open(_bstr_t"Select * from Tableinfo", (IDispach *)cn, adOpenStatic,
 adLockOptimistic, adCmdText);
 if(rs->RecordCount > 0)
 {
     do_something
  }
 else
 {
   return -1;
 } 为什么rs->RecordCoount 总是-1呢?
 用GetRecordCount 也一样!

解决方案 »

  1.   

    MSDN上是这样描述的,GetRecordCount()和RecordCount的返回值与Data Provider和你的Recordset的游标有关,有些特殊情况会返回-1
      

  2.   

    是啊,我也看了MSDN,说Provider不支持的时候会返回-1,可是我前些天用RecordCount还对呢。
       如果是这样,那我怎么得到记录数呢?难道要从头到尾通过移动记录来获得?
      

  3.   

    要先把游标指到最后一个记录之后用GetRecordCount()才行
      

  4.   

    移动到最后也不行,估计是Provider不支持了,但是前些天还用过啊,而且我以前用VB也这么写的。
      

  5.   

    实在不行就使用SELECT COUNT(*),XXX,XX FROM XXX