2010-04-04 51 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... 
    } 
}