#c# #sql-server #sqldatareader
#c# #sql-сервер #sqldatareader
Вопрос:
Я хочу проверить, имеет ли значение sqldatareader значение null или нет. Итак, попробовал следующий код:
if (x[k]!= DBNull.Value)
{
box.Text = Convert.ToString(x[k ]);
if ((box.Text) != "")
current[j - 1] = Convert.ToDouble(box.Text);
else current[j - 1] = 0;
box.Enabled = false;
}
Однако при попытке проверить значение в datareader выдается сообщение об ошибке «недопустимая попытка чтения данных при отсутствии данных». Как еще я должен проверить, есть ли данные или нет.!! пожалуйста, помогите. здесь x является sqldatareader
SqlDataReader x = cmd.ExecuteReader();
а cmd — это команда select commnand..
Ответ №1:
Вы можете использовать SqlDataReader.HasRows
— это верно, если присутствует хотя бы одна строка данных, в качестве альтернативы вы можете прочитать все результаты с помощью SqlDataReader.Read()
;
Итак, для вашего примера:
while(x.Read())
{
//read stuff
}
Ответ №2:
Вы можете выполнить проверку null и строки Has перед доступом к потокам данных.
вот так
if(null != x amp;amp; x.HasRows)
{
//Your code
}
Комментарии:
1. но все равно он показывает ту же ошибку. !! хотя условие if выполнено, оно не способно выполнить поле line. Текст = Преобразовать. toString(x[k ]); количество полей в x показывает 6, но тогда почему оно не может прочитать x[k]? даже когда k = 0.
2. Попробуйте быстро просмотреть значение x[k].
3. возможно ли просмотреть значение, хранящееся в datareader? я имею в виду, я не думаю, что есть способ заглянуть в значение в пределах x[0] или x[1]..
4. Да, используя функцию быстрого просмотра, вы можете это сделать.