Как использовать multi data reader в C#
Цитата:при использовании нескольких datareader для повторного извлечения данных из более чем одной таблицы. у меня есть ошибка.. недопустимая попытка вызова CheckDataIsReady при закрытии считывателя.
Что я уже пробовал:
void btn_Click(object sender, EventArgs e) { Button source = (Button)sender; conn.Open(); SqlCommand cmd = new SqlCommand("select cod , name , price , Unit from info_food where cod='"+source.Name+"'", conn); SqlDataReader dr = cmd.ExecuteReader(); if(dr.HasRows && dataGridView1 == null || dataGridView1.Rows.Count == 0) { dr.Read(); dataGridView1.Rows.Add(dr["cod"], dr["name"], dr["Unit"], dr["price"] , 1); dr.Close(); conn.Close(); } else if (dataGridView1.Rows.Count > 0) { foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.Cells[row.Index].Value.ToString().Equals(source.Name)) { string mount = dataGridView1.Rows[Int32.Parse(source.Name)-1].Cells[4].Value.ToString(); int plus = Convert.ToInt32(mount) + 1; dataGridView1.Rows[0].Cells[4].Value = plus; } else { dr.Read(); dataGridView1.Rows.Add(dr["cod"], dr["name"], dr["Unit"], dr["price"], 1); } } } conn.Close(); }
Richard MacCutchan
Где именно происходит ошибка?
saeid23
еще
{
др.читать();
dataGridView1.Строк.Добавить(д-р["код"], доктор["имя"], Доктор["подразделение"], доктор["цена"], 1);
}
Richard MacCutchan
Итак, доктор.HasRows, скорее всего, ложь.
Richard MacCutchan
Вам нужно изменить свою логику так, чтобы вы выполняли любой код только в том случае, если вызов dr.HasRows
возвращается true
Если он возвращает false, то делать нечего.
saeid23
хорошо спасибо
Gerry Schmitz
Взгляните внимательнее на свои первые 2 "Если".
saeid23
Ошибка чтения внутри еще