Хранимая процедура - C#

Узнай цену своей работы

Формулировка задачи:

доброго времени суток! Не могли бы подсказать, как правильно вызывать хранимую процедуру в сишарпе? Сама процедура написана на sql. процедура принимает 3 параметра типа int, и 1 выходной параметр типа varchar. В сишарпе есть 3 текст бокса под эти 3 параметра и 1 текстбокс под выходной параметр. Проблема в том что никак не получается правильно вызвать.
 private void button1_Click(object sender, EventArgs e)
        {
            cmd.Connection = con;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "exec p_one @par1=p_number_spec, @par2=numer_zakaz ,@par3=vip_li_zakaz, @par4 = msg";
            cmd.Parameters.Clear();
            SqlParameter p1 = cmd.Parameters.Add("@par1", SqlDbType.Int);
            SqlParameter p2 = cmd.Parameters.Add("@par2", SqlDbType.Int);
            SqlParameter p3 = cmd.Parameters.Add("@par3", SqlDbType.Int);
            SqlParameter p4 = cmd.Parameters.Add("@par4", SqlDbType.VarChar,100);
            p1.Direction = ParameterDirection.Input;
            p1.Value = textBox_n_spec.Text;
            p2.Direction = ParameterDirection.Input;
            p2.Value = textBox_n_zakaz.Text;
            p3.Direction = ParameterDirection.Input;
            p3.Value = textBox_vip.Text;
            p4.Direction = ParameterDirection.Output;
            p4.Value = textBox_msg;
            con.Open();
            try
            {
                cmd.ExecuteNonQuery();
                MessageBox.Show("success!");
            }
            catch (Exception ex) 
            {
                MessageBox.Show(ex.Source + ex.Message + ex.HelpLink);
            }
            con.Close();
        }
В CommandType пробовал писать cmd.CommandType = CommandType.StoredProcedure; , но тоже не получалось. Все время пишет что не удалось найти процедуру принемающие параметры и перечисляет мои параметры. Или просто не удалось выполнить и пишет тело запроса. Из скл манеджера процедура вызывается нормально. В скл менеджере вызывается вот так.
DECLARE @usr_mesg VARCHAR(100)
EXEC p_one 7,5,1 , @mesg = @usr_mesg
Пожалуйста подскажите где ошибка. Заранее спасибо.

Решение задачи: «Хранимая процедура»

textual
Листинг программы
textBox_msg.Text=p4.Value.ToString();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы