J'ai un problème avec le morceau de code suivant. Je passe un paramètre (List<SqlParameter>
) à une méthode exécutant le code suivant. Lorsqu'il exécute SQL Server, il génère une erreur indiquant que le proc attend un paramètre qui n'a pas été fourni. Je connais cette erreur et je la comprends, et en parcourant le code, je peux voir que l'objet cmdExecuteReader
a une collection de paramètres avec le nom et la valeur corrects. Quel pourrait être le problème?Problème SqlCommand.Parameters.AddWithValue: Procédure ou fonction X attend le paramètre @Y, qui n'a pas été fourni
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. Personnellement, je n'utilise pas AddWithValue, préférant définir explicitement les types de données (et les tailles) - sinon vous risquez de vous retrouver avec des suppositions incorrectes (comme les valeurs de chaînes .NET passées en tant que NVARCHAR) dont je suis paranoïaque – AdaTheDev