I am populating tables using a stored procedure. The table allows a \'null\' for the middle initial of the name, but I\'m getting the following error message:
add the parameter for MiddleInitial also with Null value
public void ProcessForm(string[] InputData)
{
string ConnString = System.Configuration.ConfigurationManager.ConnectionStrings["AssociatedBankConnectionString"].ToString();
SqlConnection conn = new SqlConnection(ConnString);
SqlCommand cmd = new SqlCommand("uspInsertPersonalAccountApplication", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@AccountType", "Savings");
cmd.Parameters.AddWithValue("@AccountSubType", "Savings");
cmd.Parameters.AddWithValue("@ExistingCustomer","No");
cmd.Parameters.AddWithValue("@MiddleInitial",DBNull.Value);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
hey you have to set with store procedure
@MiddleInitial varhcar(8) = null
Try to pass in DBNull.Value
instead of null
.
There are two options here:
Modify you stored procedure and make @MiddleInitial param optional (which is currently not optional that's why error is thrown)
@MiddleInitial nvarchar(10) = NULL
Or add following line to your code:
cmd.Parameters.AddWithValue("@MiddleInitial", null);
I created an extension method to battle this problem. Marcin's suggestion is also worth considering if you can update the stored procedure.
cmd.Parameters.AddString("@MyParamName", myValue);
public static class SQLExtension
{
public static void AddString(this SqlParameterCollection collection, string parameterName, string value)
{
collection.AddWithValue(parameterName, ((object)value) ?? DBNull.Value);
}
}
You need to declare on everything - even if it's null.
Use DBNull.Value for MiddleInitial
.
cmd.Parameters.AddWithValue("@MiddleInitial",DBNull.Value);