Existe-t-il une différence entre null et System.DBNull.Value? Si oui, qu'est ce que c'est?
J'ai remarqué ce comportement maintenant -
while (rdr.Read())
{
if (rdr["Id"] != null) //if (rdr["Id"] != System.DBNull.Value)
{
int x = Convert.ToInt32(rdr["Id"]);
}
}
Alors que je récupère des données de la base de données à l'aide d'un datareader sql, bien qu'aucune valeur ne soit if(rdr["Id"] != null)
renvoyée true
et que j'ai finalement jeté une exception pour convertir un null en entier.
Mais, ceci si j'utilise des if (rdr["Id"] != System.DBNull.Value)
retours false
.
Quelle est la différence entre null et System.DBNull.Value?
System.Data
, et l'autre est une valeur spéciale signifiant l'absence de référent. Ils n'ont rien à faire ensemble. Pouvez-vous expliquer ce qui vous trouble? Votre vraie question est-elle "pourquoi faireDataRows
et seDataReaders
mettre à l'DBNull.Value
intérieur d'eux-mêmes au lieu denull
?"