Tôi gặp vấn đề với đoạn mã folowwing. Tôi đang chuyển một tham số (List<SqlParameter>
) đến một phương thức thực hiện đoạn mã sau.SqlCommand.Parameters.AddWithValue issue: Thủ tục hoặc hàm X mong đợi tham số @Y, không được cung cấp
Khi nó thực hiện SQL Server ném một lỗi nói rằng proc mong đợi một tham số không được cung cấp. Tôi biết lỗi này và hiểu nó, và khi bước qua mã tôi có thể thấy rằng đối tượng cmdExecuteReader
có một tập hợp các tham số với tên và giá trị chính xác. Điều gì có thể là vấn đề?
public SqlDataReader ExecuteReader(string storedProcedure, List<SqlParameter> parameters = null)
{
SqlCommand cmdExecuteReader = new SqlCommand()
{
CommandType = System.Data.CommandType.Text,
Connection = conn,
CommandText = storedProcedure
};
if (parameters != null)
{
foreach (SqlParameter param in parameters)
{
cmdExecuteReader.Parameters.AddWithValue(param.ParameterName, param.Value);
}
}
if (conn.State == System.Data.ConnectionState.Closed)
conn.Open();
return cmdExecuteReader.ExecuteReader();
}
+1. Cá nhân tôi không sử dụng AddWithValue, thích xác định rõ ràng các kiểu dữ liệu (và kích cỡ) - nếu không bạn có thể kết thúc với các giả định không chính xác (chẳng hạn như các giá trị chuỗi .NET được truyền vào như là NVARCHAR) mà tôi bị hoang tưởng về – AdaTheDev