Count始终返回-1 SQL Server。 ASP.NET C#

时间:2012-01-22 15:31:12

标签: c# sql-server-2008

查询始终返回-1不知道原因。有人请解释一下。计数值始终为-1。

string query = "SELECT COUNT(*) AS Emails FROM users";

using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(query, connection);
    command.Parameters.AddWithValue("@email", email);

    try
    {
       connection.Open();
       count = command.ExecuteNonQuery();

       if (count > 0)
          return "Something Wrong1";
    }
    catch
    {
       return "Something Wrong2";
    }

    return count + "Every thing ok";
 }

4 个答案:

答案 0 :(得分:4)

这是因为ExecuteNonQuery不返回查询结果,它只是在SQL服务器上执行它。返回值是语句影响的行数,当语句不影响任何行时为-1。 ExecuteNonQuery(顾名思义)不是用于返回查询结果,而是用于运行更改数据的语句(例如INSERT,DELETE,UPDATE)。文档声明:

  

对于UPDATE,INSERT和DELETE语句,返回值为   受命令影响的行数。 (...)对于所有其他类型的   语句,返回值为-1。如果发生回滚,则返回   值也是-1。

您可以使用:

count = (int)command.ExecuteScalar();

获得您正在寻找的计数。 docs for ExecuteScalar中还有一个示例。

答案 1 :(得分:2)

您需要ExecuteScalar而不是ExecuteNonQuery来检索计数值。

答案 2 :(得分:1)

我想你或许你的SQL语句是什么意思:

SELECT COUNT(*) FROM users WHERE Email = @email

除此之外,您必须使用ExecuteScalar方法来检索计数。

答案 3 :(得分:0)

我不是C#专家,但command.ExecuteNonQuery()似乎不对......毕竟这是查询