Как сохранить значение запроса SQL Server в переменной? - PullRequest
0 голосов
/ 07 апреля 2019

Я хочу суммировать все значения столбца (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 Ответ

5 голосов
/ 07 апреля 2019

В вашем коде вы должны закрыть соединение после цикла, закрытие соединения внутри цикла вызовет ошибку:

while (dr.Read())
{
    sum = Convert.ToInt32(dr[0]);
    MessageBox.Show(sum.ToString());              
}
con.Close();
  1. Сумма должна возвращать одно значение, так что вы можете просто получить значение следующим образом:

    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;
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...