2013-09-26 4 views
-2

я получил ошибку, когда я пытаюсь обновить мои записиПроцедура или функция ожидает параметр, который не входит в комплект

процедура или функция (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; 
    } 
} 
+4

Мои способности психической отладки говорят мне, что вместо '' @birthdate'' вы должны использовать '@dateofbirth '' – SWeko

+2

btw; 'try' /' catch', который делает только «throw», ничего не добавляет: вы также можете удалить все из них. –

+2

, но то, что вы абсолютно ** должны ** иметь, «использует» вокруг этого «objconn» - в тот момент, когда вы не закрываете соединение должным образом, и вы быстро заполните пул соединений (там также должен быть * используя 'around' objcommand', но этот только« плохой », а не« фатальный ») –

ответ

1

Используя комментарий SWeko в:

Заменить эту строку:

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

с:

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

две возможности:

  • имя параметра имеет опечатка (который может включать в себя чувствительность к регистру, если база данных сконфигурирована для что); если так: лиса опечатка
  • значение параметра null (что означает, что он не получает отправленные на все); если так заменить DBNull.Value

Применяя обе возможности вместе:

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

Ваше имя параметра в вашем зр является @dateofbirth и вы передаете @birthdate из выше кода. Поэтому измените его на @dateofbirth.

Смежные вопросы