Me cansé de escribir el siguiente código:¿Cómo parametrizar una cadena nula con DBNull.Value clara y rápidamente
/* Commenting out irrelevant parts
public string MiddleName;
public void Save(){
SqlCommand = new SqlCommand();
// blah blah...boring INSERT statement with params etc go here. */
if(MiddleName==null){
myCmd.Parameters.Add("@MiddleName", DBNull.Value);
}
else{
myCmd.Parameters.Add("@MiddleName", MiddleName);
}
/*
// more boring code to save to DB.
}*/
Así, escribí esto:
public static object DBNullValueorStringIfNotNull(string value)
{
object o;
if (value == null)
{
o = DBNull.Value;
}
else
{
o = value;
}
return o;
}
// which would be called like:
myCmd.Parameters.Add("@MiddleName", DBNullValueorStringIfNotNull(MiddleName));
Si esto es una buena forma de hacerlo, ¿qué sugieres como nombre del método? DBNullValueorStringIfNotNull es un poco detallado y confuso.
También estoy abierto a formas de aliviar este problema por completo. ME ENCANTARÍA hacer esto:
myCmd.Parameters.Add("@MiddleName", MiddleName==null ? DBNull.Value : MiddleName);
pero eso no funcionará porque el "Operador" ?? no se puede aplicar a operandos de tipo 'cadena' y 'System.DBNull' ".
Tengo C# 3.5 y SQL Server 2005 a mi disposición si es importante.
no escribiría la instancia nula en todos - si el valor es nulo, omitir de la instrucción de inserción. –
pero eso no funcionará. - por favor, sea específico, ¿por qué la gente debería adivinar? – Andrey
@Andrey: Su declaración no compilará (el compilador dirá que no hay conversión implícita entre 'DBNull' y' string'). –