expects parameter '@ID', which was not supplied?

31,059

Solution 1

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

Solution 2

this one solve my problem may be it may helpful

cmd.CommandType = CommandType.StoredProcedure;

Solution 3

Your ID parameter in the stored procedure must be set as OUTPUT parameter. You are just setting it in code not in stored procedure.

Solution 4

Hy guys.

You have to set the property CommandType for the Command to StoredProcedure if that's the case. Otherwise it woun't detect the parameters.

Share:
31,059
Azhar
Author by

Azhar

.net / iOS / Android / Windows Mobile/ React-native Optimization Optimization Optimization

Updated on August 01, 2022

Comments

  • Azhar
    Azhar almost 2 years

    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;
    }
    
  • Azhar
    Azhar about 12 years
    I did it in StoredProcedure :)