获取 Recordset 对象中的记录数 C++

2791人阅读 评论(0) 收藏 举报

本文转自:http://dev.firnow.com/course/3_program/c++/cppsl/2008419/110683.html

在 ADO 中,用 Recordset  对象的 Open 方法打开记录集后,就可以用 GetRecordCount 方法获取记录数。

代码如下:

    CString strSQL = "SELECT * FROM authors"; 

    _RecordsetPtr pRs = NULL; 
    pRs.CreateInstance("ADODB.Recordset");

long nRecordCount = 0;

try

        pRs->Open( _variant_t(strSQL),
            m_pConnection.GetInterfacePtr(),
            adOpenStatic,
            adLockOptimistic,
            adCmdText);


        nRecordCount = pRs->GetRecordCount();

        pRs->Close();
    }
catch ( _com_error &e )

        MessageBox( e.Description() ); 
    }

    CString strRecordCount;

    strRecordCount.Format( "RecordCount: %d" , nRecordCount );

    MessageBox( strRecordCount );

注意:

在用 Open 方法打开记录集时使用了 adOpenStatic 游标;如果使用 adOpenDynamic 游标,GetRecordCount 方法将返回 -1 。

我的看法:

使用静态游标时,数据已经被取到了本地内存中,所以可以知道记录数;

而使用动态游标时,只有移动到记录集结尾时才能统计出记录数,所以刚打开记录集时返回 -1 。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5554237次
    • 积分:47743
    • 等级:
    • 排名:第68名
    • 原创:601篇
    • 转载:317篇
    • 译文:24篇
    • 评论:1150条
    博主介绍
    大叔的年龄小伙子的心,喜欢折腾,对自己感兴趣的事物有一种痴迷劲儿,不弄出个所以然来是不会轻易放手的。年龄大再加上事情多,非全速前进不可了。
    请博主喝杯咖啡

    博主的微信公众号

    博客专栏
    最新评论