Domanda

Quale approccio è raccomandato:

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

o

void Add(int? value)
{
   command.Parameters.Add("@foo").Value = (object)value ?? DBNull.Value;
}
È stato utile?

Soluzione

Se si desidera passare un valore null in un parametro, è necessario passare DBNull.Value come nel tuo secondo esempio.

Se si assegna null come valore del parametro, il parametro non verrà inviato alla procedura, che renderà la procedura di chiamata a non riuscire (se richiesto il parametro) oppure utilizzare il valore predefinito per il parametro, che può o non può essere nullo.

Altri suggerimenti

Dipende dalla funzionalità desiderata.

Se si passa null come valore allora la SqlCommand tratterà che lo stesso come se il parametro non era stato passato a tutti. Se si tratta di un parametro obbligatorio, ad esempio, una stored procedure allora che farà sì che i vostri dati di sicuro.

Se si passa DBNull.Value poi lo SqlCommand che tratterà come SQL nulla viene passato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top