2010-04-04 5 views
3

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

Процедура или функция «getbug» ожидает параметр «@bugID», который не был поставлен.

Это мой код для вызова процедуры.

SqlCommand cmd = new SqlCommand("getbug", cn); 
cmd.Parameters.Add(new SqlParameter("bugID", bugID)); 

BUGID устанавливается в 1089 (и тип INT)

Я не могу понять, почему это не будет работать.

+0

Просто отметим, что добавление «@» к параметру не устраняет проблему. –

+0

Если добавление @ не работает, вы можете показать нам еще один код. То, как вы это делаете * должно * работать – CResults

+2

Ahh, добавляет ли cmd.CommandType = CommandType.StoredProcedure? Я думаю, что он по умолчанию .Text – CResults

ответ

4

Попробуйте вместо

SqlCommand cmd = new SqlCommand("getbug", cn); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.Add(new SqlParameter("@bugID", bugID)); 
2

Попробуйте добавить "@" для параметра

SqlCommand cmd = new SqlCommand("getbug", cn); 
cmd.Parameters.Add(new SqlParameter("@bugID", bugID)); 
1

Больше код поможет. Вот пара идей.

Если вы вызываете хранимую процедуру, вам необходимо указать CommandType. Кроме того, вы можете использовать метод AddWithValue, чтобы сократить код.

using (var cn = new SqlConnection("your connection string")) 
{ 
    using (var cmd = new SqlCommand("getbug", cn)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@bugID", bugID); 

     //etc... 
    } 
} 
Смежные вопросы