调用SELECT COUNT(*)查询后从数据集返回数字

本文关键字:数据集 返回 数字 查询 SELECT COUNT 调用 | 更新日期: 2023-09-27 18:06:08

我有这样的查询:

SELECT COUNT(*) From Employees

我执行查询,得到如下:

    public static int GetNumJobs()
{
    clsJobPosting JobPosting = new clsJobPosting();
    DataSet dsJobs = JobPosting.GetNumRows();
    DataTable dtJobs = dsJobs.Tables[0];
    return Convert.ToInt32(dtJobs.Rows[0]);
}

GetNumRows()返回数据集,我想从这个查询返回行数,我怎么能做到这一点?

调用SELECT COUNT(*)查询后从数据集返回数字

尝试更改

return Convert.ToInt32(dtJobs.Rows[0]);

return Convert.ToInt32(dtJobs.Rows[0][0]);

还有,为什么从JobPosting.GetNumRows()返回DataSet ?你应该在那里返回一个int,这样你就不必在你的代码中重复相同的逻辑。

您需要为存储过程中的列指定一个名称:

SELECT COUNT(*) ItemCount FROM Employees

顺便说一句,你真的不应该使用COUNT(*)。只使用主键列,像这样:

SELECT COUNT(ItemID) ItemCount FROM Employees

而不是将其填充到DataSet并抓取行,您应该使用标量执行。对于单个返回值,填充数据集的开销太大了。

在你的代码中:

return dtJobs.Rows[0].Field<int>("ItemCount");

在您的示例中,是dtJobs.Rows["columnName"];,其中columnName是从存储过程返回的列的名称。

还有一些代码建议:

  1. 这也有点误导,方法被命名为GetNumRows(),但你返回的是DataSet。也许可以用GetJobs或其他类似的词来让它更容易读懂。

  2. 您不需要在类名前加上cls。VS IDE会以多种方式为您提供所有必要的信息。