2010-04-04 47 views
3

我试图访问一个存储过程,我得到一个错误,指出:的SqlParameter不正常

过程或函数“getbug”需要参数“@bugID”,但未提供。

这是我的代码来调用该过程。

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

错误ID设置为1089(和类型为int)

我想不通,为什么这是不行的。

+0

只需要注意,向参数添加“@”不能解决问题。 – 2010-04-04 23:07:45

+0

如果添加@不起作用,您可以向我们展示更多代码。你这样做的方式*应该*工作 – CResults 2010-04-04 23:08:58

+2

啊,是否加入cmd.CommandType = CommandType.StoredProcedure工作?我认为它默认为.Text – CResults 2010-04-04 23:10:54

回答

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... 
    } 
}