我正在尝试检索表中的行数,但无论数字如何,我总是得到1作为结果。
以下是代码:
UpdateData(TRUE);
CDatabase database;
CString connectionstring, sqlquery, Slno,size,portno,header,id;
connectionstring=TEXT("Driver={SQL NATIVE CLIENT};SERVER=CYBERTRON\\SQLEXPRESS;Database=packets;Trusted_Connection=Yes" );
database.Open(NULL, FALSE, FALSE, connectionstring);
CRecordset set(&database);
sqlquery.Format(TEXT("select * from allpacks;"));
set.Open(CRecordset::forwardOnly, sqlquery, NULL);
int x=set.GetRecordCount();
CString temp;
temp.Format("%d",x);
AfxMessageBox(temp);
;
答案 0 :(得分:5)
您是否阅读了documentation for GetRecordCount()?
保持记录计数 作为“高水位”的 最高编号的记录,但被视为 用户在记录中移动。 记录总数仅为 在用户超越后已知 最后的记录。为了表现 原因,计数未更新时 你打电话给MoveLast。数数 记录自己,调用MoveNext 反复,直到IsEOF返回 非零。通过添加记录 CRecordset:AddNew和Update增加 伯爵;通过删除记录 CRecordset :: Delete减少了 计数。
你没有穿过这些行。
现在,如果你真的试图在我的一张桌子上计算行数,那我就会用一根锋利的棍子打你的眼睛捅你的眼睛。相反,我通常希望你像这样使用SQL:
select count(*) num_rows from allpacks;
该SQL语句将始终返回一行,其中一列名为“num_rows”。