期望参数'@ID',没有提供?

Azh*_*har 18 .net c# database sqlcommand

我发送ID作为outparameter,但它给出了错误

System.Data.SqlClient.SqlException:过程或函数'usp_ClientHistoryItem'需要参数'@ID',这是未提供的.

 using (SqlCommand cmd = new SqlCommand("dbo.usp_ClientHistoryItem", conn))
 {
      SqlParameter parameterID = new SqlParameter("@ID", oReservation.Id);
      parameterID.Direction = ParameterDirection.Output;
      cmd.Parameters.Add(parameterID); 

      cmd.Parameters.Add(new SqlParameter("@PhoneNo", oReservation.ClientPhone));
      cmd.Parameters.Add(new SqlParameter("@UserId", oReservation.UserID));
      cmd.Parameters.Add(new SqlParameter("@Description", oReservation.Description));
      cmd.Parameters.Add(new SqlParameter("@TestId", oReservation.TestId));
      cmd.Parameters.Add(new SqlParameter("@StartDate", oReservation.StartDate));

      cmd.ExecuteNonQuery();

      returnValue = Convert.ToInt32(cmd.Parameters["@ID"].Value);

      return returnValue;
}
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 41

您似乎在调用存储过程 - 但您从未自己定义SqlCommand为存储过程:

using (SqlCommand cmd = new SqlCommand("dbo.usp_ClientHistoryItem", conn))
{
    cmd.CommandType = CommandType.StoredProcedure;  // add this line to tell ADO.NET it's a stored procedure!!
Run Code Online (Sandbox Code Playgroud)

如果你忘记了这一行,那么ADO.NET会尝试将你的东西解释为ad-hoc SQL语句....