如何将SQL Server查询值存储到变量?

时间:2019-04-07 10:22:01

标签: c# sql-server

我想对列(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();
}

1 个答案:

答案 0 :(得分:5)

在您的代码中,应在循环后关闭连接,在循环内关闭连接将导致错误:

while (dr.Read())
{
    sum = Convert.ToInt32(dr[0]);
    MessageBox.Show(sum.ToString());              
}
con.Close();
  1. Sum应该返回一个值,因此您可以像这样简单地获取值:

    int sum = Convert.ToInt32(cmd1.ExecuteScalar());
    
  2. 直接在查询中添加变量使其易于注入。改用参数:

    SqlCommand cmd1 = new SqlCommand("Select sum(ttl) from feereceipt where std_id = @id",con);
    cmd1.Parameters.Add("@id", SqlDbType.VarChar).Value = textBox1.Text;