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

本文关键字:一个 结果 错误 执行 简单 查询 为什么 方法 | 更新日期: 2023-09-27 17:51:23

我有以下问题:

我有这个Microsoft SQL Server查询:

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

,在Microsoft SQL Server management Studio中执行,返回给我这个float: 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;
    }

问题是,当执行上述方法时,结果值为vulnerability ityseverityaverage 不是期望值(7,34792844929602),但它是错误的值:-1.0

为什么?怎么了?我错过了什么?

Tnx

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

From SqlCommand.ExecuteNonQuery method

对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数。当一个触发器存在于表被插入或更新时,返回值包含数字受插入或更新操作和编号影响的行受一个或多个触发器影响的行。对于所有其他类型的语句,返回值为-1

因为你的查询是SELECT语句,所以…

作为解决方案,您可能需要使用ExecuteScalar方法,该方法返回结果中第一行的第一列作为object

vulnerabilitySeverityAverage = (double)command.ExecuteScalar();

尝试使用command.ExecuteScalar()方法