预计参数'@ID',这是不提供? [英] expects parameter '@ID', which was not supplied?

查看:166
本文介绍了预计参数'@ID',这是不提供?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我送ID作为输出参数,但它给错误

  

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

code

 使用(CMD的SqlCommand =新的SqlCommand(dbo.usp_ClientHistoryItem,康涅狄格州))
 {
      SqlParameter的参数标识=新的SqlParameter(@ ID,oReservation.Id);
      parameterID.Direction = ParameterDirection.Output;
      cmd.Parameters.Add(参数标识);

      cmd.Parameters.Add(新的SqlParameter(@ PHONENO,oReservation.ClientPhone));
      cmd.Parameters.Add(新的SqlParameter(@用户ID,oReservation.UserID));
      cmd.Parameters.Add(新的SqlParameter(@描述,oReservation.Description));
      cmd.Parameters.Add(新的SqlParameter(@ TestId,oReservation.TestId));
      cmd.Parameters.Add(新的SqlParameter(@起始日期,oReservation.StartDate));

      cmd.ExecuteNonQuery();

      的returnValue = Convert.ToInt32(cmd.Parameters [@ ID]值。);

      返回的returnValue;
}
 

解决方案

您似乎在调用存储过程 - 但你从来没有的确定的SqlCommand 是一个存储过程:

 使用(CMD的SqlCommand =新的SqlCommand(dbo.usp_ClientHistoryItem,康涅狄格州))
{
    cmd.CommandType = CommandType.StoredProcedure; //添加这行告诉ADO.NET这是一个存储过程!
 

如果您忘记了该行,那么ADO.NET将尝试跨preT你的东西作为一个特设的SQL语句......

I am sending ID as outparameter but its giving error

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

Code

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

解决方案

You seem to be calling a stored procedure - yet you've never defined your SqlCommand to be a stored procedure:

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!!

If you forget that line, then ADO.NET will try to interpret your stuff as an ad-hoc SQL statement....

这篇关于预计参数'@ID',这是不提供?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆