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

时间:2011-08-18 22:24:09

标签: c# asp.net sql

我有这个问题:

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()返回数据集,我想从此查询中返回行数,我该如何实现?

3 个答案:

答案 0 :(得分:0)

尝试更改此

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

到这个

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

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

答案 1 :(得分:0)

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

仅提供一些代码建议:

  1. 该方法名为GetNumRows(),但您返回的是DataSet,这也有点误导。也许通过在这种程度上说GetJobs或其他东西来使其更具可读性。

  2. 您无需在cls前面添加类名称前缀。 VS IDE将以多种方式为您提供所有必要的信息。

答案 2 :(得分:0)

您需要在存储过程中为列指定名称:

SELECT COUNT(*) ItemCount FROM Employees

另外,你真的不应该使用COUNT(*)。只需使用主键列,如下所示:

SELECT COUNT(ItemID) ItemCount FROM Employees

而不是将其填充到DataSet中并抓取该行,您应该使用标量执行。填充单个值返回的数据集会有很多开销。

在您的代码中:

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