Estoy rellenando tablas utilizando un procedimiento almacenado. La tabla permite un 'nulo' para la primera mitad del nombre, pero estoy recibiendo el mensaje de error:C# ASP.Net Parámetros.AddWithValue que rechaza el valor nulo para el parámetro
procedimiento o función 'uspInsertPersonalAccountApplication' espera el parámetro '@MiddleInitial', que no fue suministrada.
¡Gracias de antemano!
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");
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
Paso en 53 parámetros, muchos de los cuales pueden ser nulos. ¿Cómo puedo establecer dinámicamente DBNull.Value sin ajustar cada asignación en una instrucción IF? – Susan
Si es posible modificar el procedimiento almacenado, modifique los parámetros que pueden ser nulos y que sean opcionales en la declaración del procedimiento almacenado. Esa es la solución más flexible.Si esto no es posible, puede usar 'SqlCommandBuilder.DeriveParameters (comando);' y establecer 'DBNull.Value' para cada uno de ellos en bucle. Y luego asigna los que quieras. – Marcin
Consulte los comentarios en http://stackoverflow.com/a/9518215/8479: use 'cmd.ParametersAddWithValue (" @ MiddleInitial ", (object) yourVal ?? DBNull.Value);' o agregue un método de extensión como 'AddParamWithValueOrNull () ' – Rory