2016-11-07 3 views
-1

У меня есть StoredProcedure, который я создал вот так:StoredProcedure Неверное количество аргументов (C#)

Затем я попытаюсь назвать это из своего кода на C# так;

using (var con = new MySqlConnection(MySQLConStr)) 
{ 
    con.Open(); 
    using (MySqlCommand cmd = new MySqlCommand("Alerts_GetAlerts", con)) 
    { 
     cmd.Parameters.AddWithValue("@managerID", managerID); 
     using (var dataReader = cmd.ExecuteReader()) 
     { 
      while (dataReader.Read()) 
      { 
       var alert = new AlertsModel 
       { 
        ID = Convert.ToInt32(dataReader[0]), 
        Type = Convert.ToInt32(dataReader[1]), 
        ManagerID = Convert.ToInt32(dataReader[2]), 
        EmployeeID = Convert.ToInt32(dataReader[3]), 
        HolidayID = Convert.ToInt32(dataReader[4]), 
       }; 
       AllAlerts.Add(alert); 
      } 
     } 
    } 
    return AllAlerts; 
} 

Однако я постоянно получать, Incorrect number of arguments for PROCEDURE sdcdatabase.Alerts_GetAlerts; expected 1, got 0, хотя мне кажется, я передаю аргумент ManagerID через;

cmd.Parameters.AddWithValue("@managerID", managerID);

Где я буду неправильно?

+0

Попробуйте добавить 'cmd.CommandType = CommandType.StoredProcedure;' – Pikoh

+0

это будет выглядеть как http://stackoverflow.com/a/38706288 – Drew

+0

ли ManagerID переменная целого типа ? Не используйте AddWithValue, но используйте определенную перегрузку параметра ParametersCollection.Add, которая позволяет указать точный тип данных вашего параметра. – Steve

ответ

-1

попробовать этот код

using (var con = new MySqlConnection(MySQLConStr)) 
{ 
    con.Open(); 
    using (MySqlCommand cmd = new MySqlCommand("Alerts_GetAlerts(@managerID)", con)) 
    { 
     cmd.Parameters.AddWithValue("@managerID", managerID); 
     using (var dataReader = cmd.ExecuteReader()) 
     { 
      while (dataReader.Read()) 
      { 
       var alert = new AlertsModel 
       { 
        ID = Convert.ToInt32(dataReader[0]), 
        Type = Convert.ToInt32(dataReader[1]), 
        ManagerID = Convert.ToInt32(dataReader[2]), 
        EmployeeID = Convert.ToInt32(dataReader[3]), 
        HolidayID = Convert.ToInt32(dataReader[4]), 
       }; 
       AllAlerts.Add(alert); 
      } 
     } 
    } 
    return AllAlerts; 
} 
+1

Я должен быть слепым. В чем разница между этим кодом и одним OP? – Pikoh

+0

Эта строка с использованием (MySqlCommand cmd = new MySqlCommand («Alerts_GetAlerts (@managerID)», con)) – Sanjeewa

+0

Обычная ошибка ..... – Steve

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