ado 的 get_RecordCount 返回值总为-1 是何故??

hbs_biscuit 2003-06-25 09:55:24
我用下面的测试代码,发现不管记录数是多少get_RecordCount的返回总是-1,是怎么回事啊???
CString strConnection;
CString strSentence;
strConnection="DSN=xxx;uid=xxx;pwd=xxx";
strSentence="Select text from table1 where AutoId<10";
_Connection* pConnection;
HRESULT hr;
CoInitialize(NULL);
hr=CoCreateInstance(_uuidof(Connection),NULL,CLSCTX_ALL,_uuidof(_Connection),(void**)&pConnection);
BSTR bstrConnection=strConnection.AllocSysString();
hr=pConnection->Open(bstrConnection,NULL,NULL,0);
_Recordset* pRecordset;
hr=CoCreateInstance(_uuidof(Recordset),NULL,CLSCTX_ALL,_uuidof(_Recordset),(void**)&pRecordset);
hr=pRecordset->Open(_variant_t(strSentence),_variant_t((IDispatch*)pConnection,TRUE),adOpenForwardOnly,adLockOptimistic,-1);
hr=pRecordset->MoveFirst();
long l=0;
hr=pRecordset->get_RecordCount(&l);//l值总为 -1

VARIANT_BOOL b;
pRecordset->get_ADOEOF(&b);
while(b==VARIANT_FALSE)
{
pRecordset->MoveNext();
AfxMessageBox("ha");
pRecordset->get_ADOEOF(&b);
}
pRecordset->Close();
pConnection->Close();
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbs_biscuit 2003-06-25
  • 打赏
  • 举报
回复
我测试了z_j() 和 guanjinke(纶巾客) 的方法没有问题,谢谢各位!!!!
zyleon 2003-06-25
  • 打赏
  • 举报
回复
while(!p->adoEOF)
{
p->MoveNext();
}
p->get_RecordCount();
zyleon 2003-06-25
  • 打赏
  • 举报
回复
你要把数据库中的记录都要遍例一遍,再pRecordset->get_RecordCount
guanjinke 2003-06-25
  • 打赏
  • 举报
回复
我遇到过这种问题,我当时的解决办法是将RecordSet的CursorLocation属性设为adUseClient,当然设这个属性必须在数据库打开之前。试试吧,我以前都是这样解决的
z_j 2003-06-25
  • 打赏
  • 举报
回复
将 RecordSet.Open 的参数变一下:

hr=pRecordset->Open(_variant_t(strSentence),_variant_t((IDispatch*)pConnection,TRUE),adOpenStatic,adLockOptimistic, -1);

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧