我有这个问题:
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()返回数据集,我想从此查询中返回行数,我该如何实现?
答案 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是从存储过程返回的列的名称。
仅提供一些代码建议:
该方法名为GetNumRows()
,但您返回的是DataSet
,这也有点误导。也许通过在这种程度上说GetJobs
或其他东西来使其更具可读性。
您无需在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");