2013-07-14 1 views
0

У меня есть этот короткий код, который я использую для чтения данных в MaskedTextBox, а затем (который не является частью этого кода) ОБНОВЛЕНИЕ их через SqlCommandMaking MaskedTextBox читать NULL из SqlDataReader

SqlCommand novyprikaz = new SqlCommand("SELECT * FROM zajezd WHERE akce=" + tentoradek, spojeni); 
      spojeni.Open(); 
      SqlDataReader precti = novyprikaz.ExecuteReader(); 

      if (precti.Read()) 
      {maskedTextBox2.Text = precti.GetDateTime(24).ToShortDateString(); // i need to improve this part 
} 

Но если maskedTextBox2 знать значение NULL он дает мне ошибку, что:

Data is Null. This method or property cannot be called on Null values.

Я хотел бы спросить вас, что я должен изменить этот код, чтобы сделать его прочитать Null? Спасибо заранее.

Вот фрагмент кода, который я использовал для INSERT INTO Он отмечен как ответ.

ответ

1

Проверить, если SqlDataReader содержит значение DBNull с помощью IsDBNull method на колонке 24 и действовать соответствующим образом возвращая пустую строку или не нулевое значение

if (precti.Read()) 
{ 

     maskedTextBox2.Text = precti.IsDBNull(24) ? 
          string.Empty : 
          precti.GetDateTime(24).ToShortDateString(); 
} 
+0

Спасибо так много для ответа, но он дал мне эту ошибку: Неправильная попытка чтения, когда данные отсутствуют. – Marek

+0

Это странно, потому что если метод Read возвращает true, вы перевели читателя в первую строку, а это значит, что существует запись. Затем IsDBNull проверяет, не содержит ли столбец значения, и только если он возвращает false, код пытается прочитать столбец 24. Есть ли у вас другой код перед этими строками, который может изменить ожидаемое поведение? – Steve

Смежные вопросы