如何检索表中的行数

Posted

技术标签:

【中文标题】如何检索表中的行数【英文标题】:How to retrieve the number of rows in a table 【发布时间】:2011-05-27 08:11:52 【问题描述】:

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

【问题讨论】:

请在您的问题上多加努力。您是否尝试过使用调试器? ummmmm sry 我想我还是个新手,反正我的程序连接到数据库并从中检索行, int x=set.GetRecordCount() 应该在之后检索结果集中的行数它执行 select * from allpacks 但是当我尝试显示数字 x 它总是显示 1 即使我手动添加 3-4 行 【参考方案1】:

你读过documentation for GetRecordCount()吗?

记录数保持不变 作为“高水位线” 最高编号的记录被视为 用户浏览记录。 总记录数仅为 在用户移动之后知道 最后的记录。为了表现 原因,计数不更新时 你打电话给MoveLast。要计算 自己记录,调用 MoveNext 重复直到 IsEOF 返回 非零。通过添加记录 CRecordset:AddNew 和 Update 增加 计数;通过删除记录 CRecordset::Delete 减少 数。

您没有在行中移动。

现在,如果你真的想用这种方法来计算我的一张桌子上的行数,我会追捕你并用一根锋利的棍子戳你的眼睛。相反,我通常希望您像这样使用 SQL:

select count(*) num_rows from allpacks;

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

【讨论】:

以上是关于如何检索表中的行数的主要内容,如果未能解决你的问题,请参考以下文章

如何加快计算 PostgreSQL 表中的行数?

如何在不使用count(*)的情况下在greenplum中查找表中的行数

如何捕获插入到包含标识列的 Redshift 表中的行数?

如何使用 PHP 获取 MySQL 表中的行数?

如何计算 MySqlDataReader 中的行数?

如何计算 MySQL 表中的行数(PHP PDO)