SQL查询不返回正确的计数

时间:2011-04-28 16:37:02

标签: asp.net sql database ado.net

我正在尝试计算行数并传递该计数值以执行某些逻辑。以下是代码:

   static public int GetNoImagesofMakeID(int makeID)
{
    string sql = "Select COUNT(*) from makeImages";
    SqlDataAdapter da = new SqlDataAdapter(sql, ConnectionString);
    DataTable dt = new DataTable();
    da.Fill(dt);
    return Convert.ToInt32(dt.Rows.Count);
}

  protected void hideUnhideFileUpload(int makeID)
{

    int count = caravans.GetNoImagesofMakeID(makeID);
    if (count >= 10)
    {
        FileUpload2.Enabled = false;
    }

    else
    {
        FileUpload2.Enabled = true;
    }

}

我不知道计数总是为什么原因1.我在SQL Server上检查了相同的查询,它运行正常。但是,这里dt.rows.count总是返回1.

任何帮助都将受到高度赞赏。感谢。

4 个答案:

答案 0 :(得分:7)

代码返回的行数而不是COUNT(*)的结果。该SQL语句将始终只返回一行。您可以只运行命令:

,而不是填充数据适配器
SqlCommand cmd = someSQLConnection.CreateCommand();
cmd.CommandText = "Select COUNT(*) from makeImages";
return Convert.ToInt32(cmd.ExecuteScalar());

答案 1 :(得分:1)

您的查询返回一行,其中包含一个值(行数),因此dt.Rows.Count正确返回1(表示查询返回1行)。 使用数据表,您会在dt.Rows[0][0](数据表的第0列第0列)找到查询返回的计数

答案 2 :(得分:1)

计数()始终返回一行,而不管它计算的行数。计数()是标量值。您需要做的是读取记录集中返回的值。

有关此问题中计数的详细信息:SQL Return code from Select count(*)

答案 3 :(得分:1)

为什么要获取表行计数,而不是计数查询返回的值,因为这只返回单行?

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