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

本文关键字:参数 函数 过程 | 更新日期: 2023-09-27 18:32:49

我在尝试更新记录时出错

过程或函数(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;
  }
}

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

使用 SWeko 的评论:

替换此行:

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

跟:

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

两种可能性:

  • 参数名称有一个拼写错误(如果数据库配置为拼写错误,则可能包括区分大小写);如果是这样:Fox 拼写错误
  • 参数值为 null(这意味着它根本不被发送);如果是,请替换为 DBNull.Value

同时应用这两种可能性:

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

sp 中的参数名称@dateofbirth,并且您正在从上面的代码传递@birthdate。所以把它改成 @dateofbirth .