过程或函数需要未提供的参数

时间:2013-09-26 09:49:18

标签: c#

我尝试更新记录时收到错误

  

过程或函数(sp_UpdateEmp)需要(@dateofbirth)未提供的参数

这是我的功能

public void Updatedata(Bussinessobject.BO EBAL)
{
  objconn = new SqlConnection(connectionstring);
  if (objconn.State != ConnectionState.Open)
  try
  {
    objconn.Open();
    objcommand = new SqlCommand("sp_UpdateEmp", objconn);
    objcommand.CommandType = CommandType.StoredProcedure;
    objcommand.Parameters.AddWithValue("@id", EBAL.id);
    objcommand.Parameters.AddWithValue("@fname", EBAL.fname);
    objcommand.Parameters.AddWithValue("@lname", EBAL.lname);
    objcommand.Parameters.AddWithValue("@address", EBAL.address);
    objcommand.Parameters.AddWithValue("@phone", EBAL.phone);
    objcommand.Parameters.AddWithValue("@birthdate", EBAL.birthdate);
    objcommand.Parameters.AddWithValue("@hiredate", EBAL.datehire);
    objcommand.Parameters.AddWithValue("@gender", EBAL.gender);

    objcommand.ExecuteNonQuery();
  }
  catch
  {
    throw;
  }
}

3 个答案:

答案 0 :(得分:1)

使用SWeko的评论:

替换此行:

objcommand.Parameters.AddWithValue("@birthdate", EBAL.birthdate);

使用:

objcommand.Parameters.AddWithValue("@dateofbirth", EBAL.birthdate);

答案 1 :(得分:1)

两种可能性:

  • 参数名称有拼写错误(如果为此配置了数据库,则可以包括区分大小写);如果是这样的话: fox the typo
  • 参数值为null(这意味着根本不会发送);如果是这样替换为DBNull.Value

将两种可能性结合在一起:

objcommand.Parameters.AddWithValue("dateofbirth",
    ((object)EBAL.birthdate)??DBNull.Value);

答案 2 :(得分:0)

您sp中的参数名称为@dateofbirth,并且您从上面的代码中传递@birthdate。所以将其更改为@dateofbirth