How do I Parameterize a null string with DBNull.Value clearly and quickly
.net, c#, naming-conventions, sql-server
Solution
Cast either of your values to `object` and it will compile.
myCmd.Parameters.Add("@MiddleName", MiddleName==null ? (object)DBNull.Value : MiddleName);
Problem
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.