2012-10-02 47 views
-4

可能重複:
C# stored procedure with parameters調用存儲過程有多個參數

我試圖調用從C#傳遞多個參數的存儲過程,並不能得到它的工作。這是我到目前爲止。

cmd = new SqlCommand(); 
cmd = dbConn.CreateCommand(); 
cmd.CommandText = "inserttoTable @size = " + size + ", @brand = " + brand + ", @manu = " + manu + ", @t= " + id.ToString(); 
cmd.ExecuteNonQuery(); 

大小,品牌和手工都是字符串。 inserttoTable是存儲過程。

我收到以下錯誤:System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'TO'.

+2

一方面,如果他們是字符串,你需要撇號surroud他們,但這個原因當變量有撇號時出現問題。您最好使用參數化查詢,如上面我的評論中所示。 – LittleBobbyTables

+1

這是可以SQL SQL注入攻擊。請重新考慮使用參數化查詢。 –

+0

對我來說看起來不像一個人。類似的,是的,確切的重複,不。 –

回答

0

雖然這不是調用存儲過程,如果你的字符串參數周圍添加單引號的最佳方法,你應該沒問題。

cmd = new SqlCommand(); 
cmd = dbConn.CreateCommand(); 
cmd.CommandText = "inserttoTable @size = '" + size + "', @brand = '" + brand + "', @manu = '" + manu + "', @t= '" + id.ToString() + "'"; 
cmd.ExecuteNonQuery(); 

此代碼已過時並已在10年前棄用。

+0

那麼爲什麼這個投票結果完全不準確? – NicVerAZ

+0

我沒有足夠的聲望投票下來,所以我沒有做到這一點 – Nitrodbz

2

,如果你使用的參數和更改命令類型的存儲過程您將有較少的問題:

cmd = new SqlCommand(); 
cmd = dbConn.CreateCommand(); 
cmd.CommandText = "inserttoTable"; 
cmd.CommandType = System.Data.CommandType.StoredProcedure; 

cmd.Parameters.Add(new SqlParameter("@size", size)); 
cmd.Parameters.Add(new SqlParameter("@brand", brand)); 
cmd.Parameters.Add(new SqlParameter("@manu", manu)); 
cmd.Parameters.Add(new SqlParameter("@t", id.ToString())); 

cmd.ExecuteNonQuery(); 
相關問題