Je suis fatigué d'écrire le code suivant:Comment paramétrer une chaîne vide avec DBNull.Value clairement et rapidement
/* 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.
}*/
Alors, je l'ai écrit ceci:
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 cela est un bon moyen de faire cela alors que suggéreriez-vous comme nom de la méthode? DBNullValueorStringIfNotNull est un peu bavard et déroutant.
Je suis également ouvert aux moyens de résoudre ce problème entièrement. Je voudrais faire ceci:
myCmd.Parameters.Add("@MiddleName", MiddleName==null ? DBNull.Value : MiddleName);
mais cela ne fonctionnera pas parce que le "Opérateur" ?? ne peut pas être appliqué aux opérandes de type 'string et' System.DBNull '". J'ai le C# 3.5 et SQL Server 2005 à ma disposition si cela est important.
Je ne pas écrire l'instance nulle du tout - si la valeur est nulle, omettre de l'instruction d'insertion. –
mais cela ne fonctionnera pas. - S'il vous plaît soyez précis, pourquoi les gens devraient deviner? – Andrey
@Andrey: Sa déclaration ne compilera pas (le compilateur dira qu'il n'y a pas de conversion implicite entre 'DBNull' et' string'). –