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

And*_*ili -1 .net c# sql-server asp.net

我有以下问题.

我有这个Microsoft SQL Server查询:

Select AVG(Severity) AS 'Average Severity' from VulnerabilityAlertDocument
Run Code Online (Sandbox Code Playgroud)

执行到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;
    }
Run Code Online (Sandbox Code Playgroud)

问题是,当执行前面的方法时,漏洞范围内的结果值不是预期值(7,34792844929602),但它是错误的值:-1.0

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

TNX

Son*_*nül 9

SqlCommand.ExecuteNonQuery方法

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

由于您的查询是SELECT声明,所以..

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

vulnerabilitySeverityAverage = (double)command.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

  • 如果只有人们真的**看看优秀,免费提供的文件! (6认同)