如何检索表中的行数

时间:2011-05-27 08:11:53

标签: database visual-c++ mfc

我正在尝试检索表中的行数,但无论数字如何,我总是得到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);
;

1 个答案:

答案 0 :(得分:5)

您是否阅读了documentation for GetRecordCount()

  

保持记录计数   作为“高水位”的   最高编号的记录,但被视为   用户在记录中移动。   记录总数仅为   在用户超越后已知   最后的记录。为了表现   原因,计数未更新时   你打电话给MoveLast。数数   记录自己,调用MoveNext   反复,直到IsEOF返回   非零。通过添加记录   CRecordset:AddNew和Update增加   伯爵;通过删除记录   CRecordset :: Delete减少了   计数。

你没有穿过这些行。

现在,如果你真的试图在我的一张桌子上计算行数,那我就会用一根锋利的棍子打你的眼睛捅你的眼睛。相反,我通常希望你像这样使用SQL:

select count(*) num_rows from allpacks;

该SQL语句将始终返回一行,其中一列名为“num_rows”。