C# ASP.Net Parameters.AddWithValue rejecting null value for parameter

前端 未结 7 1741
臣服心动
臣服心动 2021-01-18 04:22

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:

相关标签:
7条回答
  • 2021-01-18 04:41

    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();
        }
    
    0 讨论(0)
  • 2021-01-18 04:43

    hey you have to set with store procedure

    @MiddleInitial varhcar(8) = null
    
    0 讨论(0)
  • 2021-01-18 04:46

    Try to pass in DBNull.Value instead of null.

    0 讨论(0)
  • 2021-01-18 04:54

    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);
    
    0 讨论(0)
  • 2021-01-18 04:54

    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);
        }
    }
    
    0 讨论(0)
  • 2021-01-18 05:01

    You need to declare on everything - even if it's null.

    Use DBNull.Value for MiddleInitial.

    cmd.Parameters.AddWithValue("@MiddleInitial",DBNull.Value);
    
    0 讨论(0)
提交回复
热议问题