Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I Parameterize a null string with DBNull.Value clearly and quickly

I got tired of writing the following code:

/* 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. }*/ 

So, I wrote this:

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)); 

If this is a good way to go about doing this then what would you suggest as the method name? DBNullValueorStringIfNotNull is a bit verbose and confusing.

I'm also open to ways to alleviate this problem entirely. I'd LOVE to do this:

myCmd.Parameters.Add("@MiddleName", MiddleName==null ? DBNull.Value : MiddleName); 

but that won't work because the "Operator '??' cannot be applied to operands of type 'string and 'System.DBNull'".

I've got C# 3.5 and SQL Server 2005 at my disposal if it matters.

like image 547
David Murdoch Avatar asked Apr 08 '10 19:04

David Murdoch


1 Answers

Cast either of your values to object and it will compile.

myCmd.Parameters.Add("@MiddleName", MiddleName==null ? (object)DBNull.Value : MiddleName); 
like image 77
Adam Robinson Avatar answered Sep 28 '22 09:09

Adam Robinson