我有一个存储过程CalculateTotal,用于返回表Spendings中Amount列中所有记录的总和
`CREATE PROCEDURE CalculateTotal
@Name varchar(50),
@Month int
@year
As
SELECT SUM(Amount) As Total
FROM Spendings
WHERE MONTH(Date) = @Month AND YEAR(Date)= @Year AND Name = @Name`
当我从SQLServer执行此过程时,执行成功并返回总数,
我需要从C#中获取Total的值,我尝试了下面的代码,
public void CalculateTotal(string name, int month , int year)
{
cmd = connection.CreateCommand();
cmd.CommandText = "EXECUTE CalculateTotal @Name,@Month,@Year";
cmd.Parameters.AddWithValue("@Name", name);
cmd.Parameters.AddWithValue("@Month", month);
cmd.Parameters.AddWithValue("@Year", year);
reader = cmd.ExecuteReader();
if(reader.HasRows)
{
while (reader.Read())
{
int total = (int)reader["Total"];
}
}
}
当我调试它时,“While”条件为true,当“While”循环的主体执行时,遇到一个名为indexAutoFrangeException:Total的错误
如何在c中检索SUM函数的值#
最佳答案
通过ADO从SQL Server返回单个值时,我建议您使用ExecuteScalar。用法示例:
Int32 total= (Int32)cmd.ExecuteScalar();
还请查看using模式的实现,以确保不会导致内存泄漏。
关于c# - 如何通过C#检索SQL中SUM函数的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29556196/