Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
计数始终返回-1 SQL Server。ASP.NETC#_C#_Sql Server 2008 - Fatal编程技术网

计数始终返回-1 SQL Server。ASP.NETC#

计数始终返回-1 SQL Server。ASP.NETC#,c#,sql-server-2008,C#,Sql Server 2008,查询总是返回-1不知道为什么。请有人解释一下。count的值始终保持为-1 string query = "SELECT COUNT(*) AS Emails FROM users"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(query, connection); command.Parameters.

查询总是返回-1不知道为什么。请有人解释一下。count的值始终保持为-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";
 }
您不需要检索计数值。

您不需要检索计数值。

这是因为它不返回查询结果,只在SQL server上执行。返回值是受语句影响的行数,如果语句不影响任何行,则返回-1
ExecuteNonQuery
(顾名思义)不用于返回查询结果,而是用于运行更改数据的语句(如INSERT、DELETE、UPDATE)。文件规定:

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

您可以使用:

count = (int)command.ExecuteScalar();
以获取您要查找的计数。在.

中还有一个例子,因为它不返回查询结果,只在SQL server上执行。返回值是受语句影响的行数,如果语句不影响任何行,则返回-1
ExecuteNonQuery
(顾名思义)不用于返回查询结果,而是用于运行更改数据的语句(如INSERT、DELETE、UPDATE)。文件规定:

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

您可以使用:

count = (int)command.ExecuteScalar();

以获取您要查找的计数。在.

中还有一个例子,我认为您的意思可能是SQL语句:

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

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

我认为您的意思可能是SQL语句:

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

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

我不是C#专家,但是
命令。ExecuteNonQuery()
似乎不正确。。。这毕竟是一个疑问

我不是C#专家,但那
命令.ExecuteNonQuery()
似乎不对。。。这毕竟是一个疑问

From:对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数。当插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受触发器影响的行数。对于所有其他类型的语句,返回值为-1。返回的不是
count
的值-调用
。ExecuteOnQuery
返回受SQL语句影响的行数-没有任何行会受到影响,因此返回-1。改为使用
.ExecuteScalar()
返回查询返回的一行一列值。From:对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数。当插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受触发器影响的行数。对于所有其他类型的语句,返回值为-1。返回的不是
count
的值-调用
。ExecuteOnQuery
返回受SQL语句影响的行数-没有任何行会受到影响,因此返回-1。使用
.ExecuteScalar()
返回查询返回的一行一列值。非常感谢。问题解决了。谢谢大家的快速回复,非常感谢。问题解决了。谢谢大家的快速回复。