c# - 需要参数 '@ID' ,但未提供?

标签 c# .net database sqlcommand

我将 ID 作为外参数发送,但它给出了错误

System.Data.SqlClient.SqlException: Procedure or function 'usp_ClientHistoryItem' expects parameter '@ID', which was not supplied.

代码

 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;
}

最佳答案

您似乎在调用存储过程 - 但您从未将 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!!

如果您忘记了该行,那么 ADO.NET 将尝试将您的内容解释为临时 SQL 语句....

关于c# - 需要参数 '@ID' ,但未提供?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9799524/

相关文章:

c# - 我可以在构造函数运行之前使用对象初始化语法为属性赋值吗?

c# - 从另一个列表中过滤列表对象

c# - "The type or namespace name could not be found. Are you missing assembly reference ?"统一错误

c# - System.FormatException 解码 Gmail 邮件的原始字段

php - 与 MYSQL 和 PHP 事件日历的事件冲突

database - 幂等 PostgreSQL DDL 脚本

c# - Windows 身份基础 - 注销或更新声明

c# - 使用 C# 创建 SOAP 服务

.net - 是否有支持 ESE 的 ORM?

database - 使用一个字段还是一个全新的表?