调用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()返回数据集,我想从这个查询返回行数,我怎么能做到这一点?
尝试更改
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是从存储过程返回的列的名称。
还有一些代码建议:
-
这也有点误导,方法被命名为
GetNumRows()
,但你返回的是DataSet
。也许可以用GetJobs
或其他类似的词来让它更容易读懂。 -
您不需要在类名前加上
cls
。VS IDE会以多种方式为您提供所有必要的信息。