它没有任何价值
using (SqlCommand cmd = new SqlCommand("SELECT SUM(Paied) FROM Debt", new SqlConnection(Program.ConnectionString)))
{
cmd.Connection.Open();
SqlDataReader myReader = cmd.ExecuteReader();
while (myReader.Read())
{
TotalPaiedAll = Convert.ToDecimal( myReader["Paied"].ToString());
}
cmd.Connection.Close();
}
答案 0 :(得分:4)
您的SQL查询应该是
SELECT SUM(Paied) AS Paied FROM Debt
或者,您可以使用
SELECT SUM(Paied) AS Paied FROM Debt TotalPaiedAll = (decimal) cmd.ExecuteScalar();
答案 1 :(得分:3)
您没有获得值的原因是SUM(Paied)
生成匿名列,而不是名为Paied的列。
以下是针对您的问题的简单修复:
using (SqlCommand cmd = new SqlCommand("SELECT SUM(Paied) As SumOfPaid FROM Debt", new SqlConnection(Program.ConnectionString)))
{
cmd.Connection.Open();
SqlDataReader myReader = cmd.ExecuteReader();
while (myReader.Read())
{
TotalPaiedAll = Convert.ToDecimal(myReader["SumOfPaid"].ToString());
}
cmd.Connection.Close();
}
这是一种更好的方法,使用ExecuteScalar方法:
using (SqlCommand cmd = new SqlCommand("SELECT SUM(Paied) As SumOfPaid FROM Debt", new SqlConnection(Program.ConnectionString)))
{
cmd.Connection.Open();
TotalPaiedAll = (decimal)cmd.ExecuteScalar();
cmd.Connection.Close();
}
答案 2 :(得分:1)
使用executioncalar而不是executereader:
decimal sum =(decimal) cmd.ExecuteScalar();
执行while循环没有意义,因为sum只是一个值。
答案 3 :(得分:0)
不是你的错误,但你还需要保护sql连接免受泄漏。