我有以下问题。
我有这个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
答案 0 :(得分:9)
来自SqlCommand.ExecuteNonQuery
method
对于UPDATE,INSERT和DELETE语句,返回值为 受命令影响的行数。当a上存在触发器时 正在插入或更新的表,返回值包括数字 受插入或更新操作影响的行数和数字 受触发器或触发器影响的行数。 适用于所有其他类型的 语句,返回值为-1 。
由于您的查询是SELECT
语句,所以..
作为解决方案,您可能需要使用ExecuteScalar
method,它会将结果中第一行的第一列作为object
返回。
vulnerabilitySeverityAverage = (double)command.ExecuteScalar();
答案 1 :(得分:1)
尝试使用command.ExecuteScalar()
方法