ADO怎样Open数据表的同时得到数据库中的总的数据行数,该如何处理

ADO怎样Open数据表的同时得到数据库中的总的数据行数
我使用GetRecordCount得到-1,使用m_pRecordset-> GetFields()-> Count;得到21,可我的表里只有五个记录

------解决方案--------------------
好象Open()的参数要为adOpenStatic才可以得到行数,大概是这样,记不清了。
------解决方案--------------------
m_pRecordset-> GetFields()-> Count;

这个是表中列的数,不是条数

open后有4个参数,后两个决定是否有count
------解决方案--------------------
对于sqlserver ,oledb驱动,
游标位置recordset.cursorlocation务必指定为adUseClient(3)
游标类型recordset.cursortype务必指定为adOpenStatic(3)
锁定类型recordset.locktype指定为adLockReadOnly(1)

这样就可以确保得到的.recordcount是记录数,如果采用服务端游标,则不一定甚至为-1

RecordCount 属性返回指示 Recordset 中记录数目的 Long 值。用 RecordCount 属性可查找 Recordset 对象中的记录数目。如果 ADO 无法确定记录数目或者提供者或游标类型不支持 RecordCount,则该属性返回 -1。读取已关闭的 Recordset 的 RecordCount 属性将产生错误。

Recordset 属性取决于提供者的功能和游标类型。对于仅向前游标,RecordCount 属性将返回 -1;对于静态或键集游标,将返回实际计数;而对于动态游标,则返回 -1 或实际计数,这取决于数据源。

------解决方案--------------------
把记录集的游标设成adUseClient就可以直接用GetRecordCount获取记录集里的记录数,
pRecordset-> CursorLocation=adUseClient.
使用m_pRecordset-> GetFields()-> Count()是得到记录集的字段数.