如何检索表中的行数

DRA*_*AKO 2 database mfc visual-c++

我试图检索表中的行数,但无论数字我总是得到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);
;
Run Code Online (Sandbox Code Playgroud)

Mik*_*ll' 5

您是否阅读过GetRecordCount()文档

记录计数保持为"高水位线",即用户在记录中移动时看到的最高编号记录.只有在用户移动到最后一条记录之后才能知道记录总数.出于性能原因,调用MoveLast时不会更新计数.要自己计算记录,请反复调用MoveNext,直到IsEOF返回非零值.通过CRecordset添加记录:AddNew和Update会增加计数; 通过CRecordset :: Delete删除记录会减少计数.

你没有在行中移动.

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

select count(*) num_rows from allpacks;
Run Code Online (Sandbox Code Playgroud)

该SQL语句将始终返回一行,其中一列名为"num_rows".