Есть ли разница между null и System.DBNull.Value? Если да, то что это?
Я заметил это поведение сейчас -
while (rdr.Read())
{
if (rdr["Id"] != null) //if (rdr["Id"] != System.DBNull.Value)
{
int x = Convert.ToInt32(rdr["Id"]);
}
}
Пока я извлекаю данные из базы данных с помощью sql datareader, хотя возвращаемое значение не if(rdr["Id"] != null)
возвращается true
и в конечном итоге вызывает исключение для приведения значения null как целого числа.
Но это, если я использую if (rdr["Id"] != System.DBNull.Value)
возврат false
.
В чем разница между null и System.DBNull.Value?
System.Data
, а другой - специальным значением, обозначающим отсутствие референта. Они не имеют ничего общего друг с другом. Не могли бы вы пояснить, в чем вы запутались? Ваш настоящий вопрос "зачем делатьDataRows
иDataReaders
вкладыватьDBNull.Value
внутрь себя, а неnull
?"