我想对列(ttl
)的所有值求和,并将结果存储在变量(sum)中,我尝试了一些代码片段,但没有成功。
SqlCommand cmd1 = new SqlCommand("Select sum(ttl) from feereceipt where std_id = '"+ textBox1.Text +"'",con);
SqlDataReader dr = cmd1.ExecuteReader();
while (dr.Read())
{
sum = Convert.ToInt32(dr[0]);
MessageBox.Show(sum.ToString());
con.Close();
}
答案 0 :(得分:5)
在您的代码中,应在循环后关闭连接,在循环内关闭连接将导致错误:
while (dr.Read())
{
sum = Convert.ToInt32(dr[0]);
MessageBox.Show(sum.ToString());
}
con.Close();
Sum应该返回一个值,因此您可以像这样简单地获取值:
int sum = Convert.ToInt32(cmd1.ExecuteScalar());
直接在查询中添加变量使其易于注入。改用参数:
SqlCommand cmd1 = new SqlCommand("Select sum(ttl) from feereceipt where std_id = @id",con);
cmd1.Parameters.Add("@id", SqlDbType.VarChar).Value = textBox1.Text;