SQLDataReader корректно читает таблицу из одной строки, но при чтении таблицы из двух строк вообще не видит записей
Есть хранимая процедура на MS SQL, в её коде содержится объявление и вывод таблицы "SELECT * FROM ...", а также добавление данных в эту таблицу.
При вызове этой процедуры в management studio выводится таблица из двух строк (скриншот ниже). При вызове этой же процедуры с теми же параметрами в приложении C# WinForms строка reader.HasRows возвращает false. В цикл while Reader также не входит, т.е. не видит строк вообще.
НО! Когда результирующая таблица этой же процедуры содержит одну строку, reader прекрасно работает. Почему такое может быть?
Результат вызова процедуры в management studio:
Код C# (AddArrive - компонент WinForms SQLCommand):
addArrive.Parameters["@item"].Value = comboBoxItemName.Text;
addArrive.Parameters["@orderDate"].Value = dateTimePickerOrder.Text;
addArrive.Parameters["@quantity"].Value = textBoxQuantity.Text;
addArrive.Parameters["@salePrice"].Value = textBoxSalePriceArrive.Text;
addArrive.Parameters["@provider"].Value = comboBoxProvider.Text;
sqlConnection1.Open();
addArrive.ExecuteNonQuery();
MessageBox.Show(addArrive.Parameters["@message"].Value.ToString());
SqlDataReader reader = addArrive.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
label1.Text = reader.GetValue(0).ToString();
}
}
sqlConnection1.Close();
Ответы (1 шт):
большое спасибо за ответы. ExecuteNonQuery() и ExecuteReader() выполняют один и тот же запрос, итого этот запрос вызывается дважды, что и вызвало ошибку. Хорошего дня вам
