2017-01-11 2 views
0

У меня есть хранимая процедура в базе данных MySQL. Эта процедура принимает 6 входных параметров и 2 выходных параметра.Не принимать параметры для хранимой процедуры mysql C#

Мне нужно вызвать эту хранимую процедуру из моего приложения C#. Ниже мой код:

if (_MySqlConnectionSMS1.State != ConnectionState.Open) 
       _MySqlConnectionSMS1.Open(); 

      using (MySqlCommand sqlcmd1 = new MySqlCommand("usp_Data_Insert", _MySqlConnectionSMS1)) 
      { 
       sqlcmd1.Parameters.Add(new MySqlParameter("@in_ApplicationName", "AEM")); 
       sqlcmd1.Parameters.Add(new MySqlParameter("@in_ApplicationCode", "AEM")); 
       sqlcmd1.Parameters.Add(new MySqlParameter("@in_NTLogin", ntid)); 
       sqlcmd1.Parameters.Add(new MySqlParameter("@in_SMSMsg", Message)); 
       sqlcmd1.Parameters.Add(new MySqlParameter("@in_Workcell", "")); 
       sqlcmd1.Parameters.Add(new MySqlParameter("@in_SMSTime", System.DateTime.Now)); 

       sqlcmd1.Parameters.Add(new MySqlParameter("@out_Result", MySqlDbType.Int32)); 
       sqlcmd1.Parameters.Add(new MySqlParameter("@out_Message", MySqlDbType.VarChar)); 
       sqlcmd1.Parameters["@out_Result"].Direction = ParameterDirection.Output; 
       sqlcmd1.Parameters["@out_Message"].Direction = ParameterDirection.Output; 

       sqlcmd1.ExecuteNonQuery(); 

       int Status = Convert.ToInt16(sqlcmd1.Parameters["@out_Result"].Value); 
       string retMessage = Convert.ToString(sqlcmd1.Parameters["@out_Result"].Value); 
      } 

Но пока sqlcmd1.ExecuteNonQuery(). Я получаю ниже ошибки:

Неправильное количество аргументов для ПРОЦЕДУРЫ TE_SMS.usp_SendSMS_Insert; ожидаемый 8, получил 0

Я даже проверил параметры в команде до его выполнения. И они доступны в списке параметров. Что мне здесь не хватает?

+1

Вам не нужно делать sqlcmd1.CommandType = CommandType.StoredProcedure; ? – BugFinder

+0

Я добавил его перед вызовом этого кода. но я пропустил, что создал новый экземпляр этой команды ... – Vijay

+0

Так это исправлено сейчас? – BugFinder

ответ

0

Надеется, что это помогает

Добавьте строку ниже, прежде чем добавлять параметры ввода/вывода в SQL объекта команды.

sqlcmd1.CommandType = CommandType.StoredProcedure;

+0

Я добавил его перед вызовом этого кода. но Imissed, что я создал новый экземпляр этой команды ... – Vijay

0

Попробуйте

  sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_ApplicationName", "AEM")); 
      sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_ApplicationCode", "AEM")); 
      sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_NTLogin", ntid)); 
      sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_SMSMsg", Message)); 
      sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_Workcell", "")); 
      sqlcmd1.Parameters.AddWithValue(new MySqlParameter("@in_SMSTime", System.DateTime.Now)); 

      sqlcmd1.Parameters.Add(new MySqlParameter("@out_Result", MySqlDbType.Int32){Direction = ParameterDirection.Output }); 
      sqlcmd1.Parameters.Add(new MySqlParameter("@out_Message", MySqlDbType.VarChar){Direction = ParameterDirection.Output }); 
      sqlcmd1.ExecuteNonQuery(); 

Чтобы получить результаты

int result1 = int.Parse(sqlcmd1.Parameters["@out_Result"].value.ToString()) 
string result2 = sqlcmd1.Parameters["@out_Message"].value.ToString(); 
Смежные вопросы