Question

Quelle approche est recommandée:

void Add(int? value)
{
   command.Parameters.Add("@foo").Value = value;
}

ou

void Add(int? value)
{
   command.Parameters.Add("@foo").Value = (object)value ?? DBNull.Value;
}
Était-ce utile?

La solution

Si vous voulez passer une valeur NULL dans un paramètre, vous devez passer DBNull.Value comme dans votre deuxième exemple.

Si vous attribuez null comme la valeur du paramètre, le paramètre ne sera pas envoyé à la procédure, qui fera la valeur par défaut l'appel de procédure à ne réussissent pas (si le paramètre est requis) ou utiliser pour le paramètre, qui peut ou ne peut pas être nulle.

Autres conseils

Cela dépend de la fonctionnalité que vous voulez.

Si vous passez null la valeur alors le SqlCommand traitera la même chose que si le paramètre n'a pas été passé du tout. Si c'est un paramètre requis, par exemple, une procédure stockée puis qui fera de votre requête à l'échec.

Si vous passez DBNull.Value alors le SqlCommand traitera que nul SQL étant passé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top