У меня возникла проблема при установке многих команд в том же открытом соединении, он всегда говорит, что есть DataReader, связанный с командой, которая должна быть закрыты, хотя я закрыл все еще дают мне такую же проблему, это мой код:Ошибка: уже существует открытый DataReader, связанный с этой командой, который должен быть закрыт первым
protected void Afficher_click(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("select * from Consommation where idAbonnement = @ab and periode between @d1 and @d2 ",con);
cmd.Parameters.AddWithValue("@ab", DropDownList1.SelectedValue);
cmd.Parameters.AddWithValue("d1", TextBox1.Text);
cmd.Parameters.AddWithValue("d2", TextBox2.Text);
con.Open();
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataBind();
//cmd.ExecuteReader().Close();
cmd = new SqlCommand("select SUM(Qte) from Consommation where idAbonnement =" + DropDownList1.SelectedValue, con);
Label2.Text = cmd.ExecuteScalar().ToString();
cmd = new SqlCommand("select AVG(Qte) from Consommation where idAbonnement =" + DropDownList1.SelectedValue, con);
Label4.Text = cmd.ExecuteScalar().ToString();
}
Можете ли вы объяснить мне, что проблема именно и как это исправить? Спасибо.
В соответствии с https://msdn.microsoft.com/en-us/library/haa3afyz (v = vs.110) .aspx говорит, что «Обратите внимание, что, хотя DataReader открыт, соединение используется исключительно этим DataReader. Вы не можете выполнять какие-либо команды для соединения, включая создание другого DataReader, пока исходный DataReader не будет закрыто." поэтому вам нужно закрыть читателя - например, прокомментированную строку – BugFinder
@BugFinder Я попробовал и закрыл Reader, он продолжал давать ту же ошибку, поэтому я прокомментировал это. –
Какая строка на самом деле дает ошибку второй sql-оператор или третий? если вы сохранили закрытие, это, вероятно, изменится на 3-е Im guessing – BugFinder