我正在尝试使用ADO在C ++中进行一些查询。这是我的代码
string commandline = "SELECT * FROM My_Table";
ADODB::_RecordsetPtr pRS("ADODB.Recordset");
ADODB::_ConnectionPtr pConn("ADODB.Connection");
pRS->Open(commandline.c_str(), _variant_t((IDispatch *) pConn, true), ADODB::adOpenUnspecified, ADODB::adLockUnspecified, ADODB::adCmdText);
cout<<pRS->GetRecordCount();
我在My_Table
中有1000条记录,因此我希望看到输出1000
。但是,输出为-1
。
我可以知道我错了吗?
非常感谢提前。
答案 0 :(得分:1)
RecourdCount
属性仅在基础提供者或游标类型实际支持时才起作用,否则返回-1。
尝试使用静态游标(传递ADODB::adOpenStatic
代替ADODB::adOpenUnspecified
)
请注意,即使提供商支持它,获取记录数也可能会占用大量资源,因为提供商必须在知道查询影响的记录数之前获取所有记录。
有关详细文档,请参阅此MSDN页面。