Frage

Welcher Ansatz empfohlen:

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

oder

void Add(int? value)
{
   command.Parameters.Add("@foo").Value = (object)value ?? DBNull.Value;
}
War es hilfreich?

Lösung

Wenn Sie einen Nullwert in einem Parameter übergeben möchten, müssen Sie DBNull.Value wie in Ihrem zweiten Beispiel passieren.

Wenn Sie assign null als Parameterwert, wird der Parameter nicht auf das Verfahren gesendet werden, die das Verfahren Anruf wird entweder nicht (wenn der Parameter erforderlich ist) oder den Standardwert für den Parameter verwenden, die gegebenen kann nicht null sein.

Andere Tipps

Es hängt von der Funktionalität, die Sie wollen.

Wenn Sie null als Wert übergeben, dann wird der SqlCommand behandelt, dass das gleiche wie wenn die Parameter überhaupt nicht bestanden hatten. Wenn es ein erforderlicher Parameter ist in zum Beispiel dann eine gespeicherte Prozedur, die bewirkt, dass Ihre Abfrage zum Scheitern verurteilt.

Wenn Sie DBNull.Value dann die SqlCommand passieren behandeln, dass als SQL null übergeben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top