ошибка sqldatareader

#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. Да, используя функцию быстрого просмотра, вы можете это сделать.