为什么执行这个简单查询的方法会给我一个错误的结果?

时间:2014-03-21 15:50:16

标签: c# asp.net .net sql-server

我有以下问题。

我有这个Microsoft SQL Server查询:

Select AVG(Severity) AS 'Average Severity' from VulnerabilityAlertDocument

执行到Microsoft SQL Server Managment Studio,返回给我这个浮动:7,34792844929602

现在我正在尝试创建一个简单实现此查询并返回获取值的C#方法,所以我做了类似这样的事情:

    public double getVulnerabilitySeverityAverage()
    {
        double vulnerabilitySeverityAverage;

        _strSQL = "Select AVG(Severity) AS 'Average Severity' from VulnerabilityAlertDocument";

        System.Data.Common.DbCommand command;
        command = _connection.CreateCommand();
        command.CommandText = _strSQL;

        vulnerabilitySeverityAverage = command.ExecuteNonQuery();

        return vulnerabilitySeverityAverage;
    }

问题在于,当执行上一个方法时, vulnerabilitySeverityAverage 中的结果值不是预期值(7,34792844929602),但它的值是错误的: -1.0

为什么呢?这有什么不对?我错过了什么?

TNX

2 个答案:

答案 0 :(得分:9)

来自SqlCommand.ExecuteNonQuery method

  

对于UPDATE,INSERT和DELETE语句,返回值为   受命令影响的行数。当a上存在触发器时   正在插入或更新的表,返回值包括数字   受插入或更新操作影响的行数和数字   受触发器或触发器影响的行数。 适用于所有其他类型的   语句,返回值为-1

由于您的查询是SELECT语句,所以..

作为解决方案,您可能需要使用ExecuteScalar method,它会将结果中第一行的第一列作为object返回。

vulnerabilitySeverityAverage = (double)command.ExecuteScalar();

答案 1 :(得分:1)

尝试使用command.ExecuteScalar()方法