¿Hay alguna diferencia entre null y System.DBNull.Value? ¿Y si si, que?
Noté este comportamiento ahora -
while (rdr.Read())
{
if (rdr["Id"] != null) //if (rdr["Id"] != System.DBNull.Value)
{
int x = Convert.ToInt32(rdr["Id"]);
}
}
Mientras que recuperar datos de la base de datos utilizando un datareader SQL, aunque no hay valor devuelto if(rdr["Id"] != null)
devuelto true
y, finalmente, lanzó una excepción para la fundición de un nulo como entero.
Pero, esto si utilizo if (rdr["Id"] != System.DBNull.Value)
devoluciones false
.
¿Cuál es la diferencia entre null y System.DBNull.Value?
System.Data
, y el otro es un valor especial que significa la falta de un referente. No tienen nada que ver el uno con el otro. ¿Puedes explicar en qué estás confundido? Su verdadera pregunta es "¿por qué hacerDataRows
yDataReaders
ponerDBNull.Value
dentro de sí mismos en lugar denull
?"