Pergunta

Qual abordagem é recomendada:

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

ou

void Add(int? value)
{
   command.Parameters.Add("@foo").Value = (object)value ?? DBNull.Value;
}
Foi útil?

Solução

Se você quiser passar um valor nulo em um parâmetro, você precisa passar DBNull.Value como no seu segundo exemplo.

Se você atribuir null Como o valor do parâmetro, o parâmetro não será enviado ao procedimento, o que fará com que a chamada do procedimento falhe (se o parâmetro for necessário) ou usará o valor padrão para o parâmetro, que pode ou não ser nulo.

Outras dicas

Depende da funcionalidade que você deseja.

Se você passar null Como o valor, o SQLCommand tratará o mesmo que se o parâmetro não tivesse sido aprovado. Se for um parâmetro necessário, por exemplo, um procedimento armazenado, isso fará com que sua consulta falhe.

Se você passar DBNull.Value Em seguida, o SQLCommand tratará isso como o SQL NULL sendo passado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top