Tôi đang điền bảng bằng cách sử dụng một thủ tục được lưu trữ. Bảng cho phép một 'null' cho tên đệm ban đầu của tên, nhưng tôi nhận được thông báo lỗi sau:C# ASP.Net Parameters.AddWithValue từ chối giá trị null cho tham số
Thủ tục hoặc hàm 'uspInsertPersonalAccountApplication' hy vọng tham số '@MiddleInitial', không được cung cấp.
Cảm ơn trước!
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();
}
Tôi chuyển qua 53 tham số, nhiều tham số có thể là rỗng. Làm thế nào tôi có thể tự động đặt DBNull.Value mà không cần gói mỗi phép gán trong câu lệnh IF? – Susan
Nếu có thể sửa đổi thủ tục được lưu trữ, sau đó sửa đổi paramateres có thể là null, và làm cho chúng tùy chọn trong khai báo thủ tục lưu trữ. Đó là giải pháp linh hoạt nhất.Nếu điều này là không thể, bạn có thể sử dụng 'SqlCommandBuilder.DeriveParameters (lệnh);' và đặt 'DBNull.Value' cho mỗi người trong vòng lặp. Và sau đó gán những cái bạn muốn. – Marcin
Xem nhận xét cho http://stackoverflow.com/a/9518215/8479: sử dụng 'cmd.ParametersAddWithValue (" @ MiddleInitial ", (đối tượng) yourVal ?? DBNull.Value);' hoặc thêm một phương thức mở rộng như 'AddParamWithValueOrNull () ' – Rory