我遇到下面這段代碼有問題。我將一個參數(List<SqlParameter>
)傳遞給執行以下代碼的方法。SqlCommand.Parameters.AddWithValue問題:過程或函數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 2010-05-06 11:41:58