У меня проблема с частью кода. Я передаю параметр (List<SqlParameter>
) методу, выполняющему следующий код.SqlCommand.Parameters.AddWithValue issue: Процедура или функция X ожидает параметр @Y, который не был отправлен
Когда он запускает SQL Server, возникает ошибка, указывающая, что proc ожидает параметр, который не был предоставлен. Я знаю эту ошибку и понимаю ее, и, пройдя через код, я вижу, что объект cmdExecuteReader
имеет набор параметров с правильным именем и значением. В чем может быть проблема?
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. Я лично не использую AddWithValue, предпочитая явно определять типы данных (и размеры). В противном случае могут возникнуть ошибочные предположения (такие как значения строки .NET, передаваемые как NVARCHAR), которые я получаю параноидальными – AdaTheDev