Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用SELECT COUNT(*)查询后从数据集返回数字_C#_Asp.net_Sql - Fatal编程技术网

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

C# 调用SELECT COUNT(*)查询后从数据集返回数字,c#,asp.net,sql,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.

我有一个疑问:

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返回数据集?您应该在那里返回一个int,这样就不必在代码中重复相同的逻辑;其中columnName是从存储过程返回的列的名称

还有一些代码建议:

该方法名为GetNumRows,但返回的是数据集,这也有点误导。也许通过说GetJobs或类似的话来让它更具可读性

您不需要在类名前面加cls。VSIDE将以多种方式为您提供所有必要的信息


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

SELECT COUNT(*) ItemCount FROM Employees
另一方面,你真的不应该使用COUNT*。只需使用主键列,如下所示:

SELECT COUNT(ItemID) ItemCount FROM Employees
您应该使用标量执行,而不是将其填充到数据集中并获取行。对于单值返回,填充一个数据集会有很大的开销

在您的代码中:

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

他正在返回一个int。不过,这应该是从他的数据库返回的标量,因为数据集对于他尝试执行的操作来说有太多的开销。这就是我的建议,我知道当前方法正在返回一个int,我对DAO方法很好奇。