2011-03-09 20 views
0

我將一個字符串轉換爲整數,然後在我的張貼表中插入這個整數。如何在SQL語句中使用我的代碼中的變量?

int currTopicID = Convert.ToInt32(id.Text); 

SqlCommand cmd = new SqlCommand("INSERT INTO post VALUES(currTopicID)", con); 

問題是currTopicID沒有被識別爲整數,當我做插入。任何幫助將不勝感激。

回答

1

你有錯誤的說法。

改用,

SqlCommand cmd = new SqlCommand("INSERT INTO post VALUES("+currTopicID.ToString()+")", con); 

或者使用參數化查詢。

+0

使** currTopicID.ToString()** – richardtallent 2011-03-09 05:19:28

+1

@richardtallent謝謝修復它。 – Adeel 2011-03-09 05:20:57

+0

雖然此命令由於轉換操作而相當安全,但將值直接插入命令文本通常是一個壞主意。相反,你應該使用參數。 – 2011-03-09 05:22:16

0

在MS SQL中傳遞變量時最好使用參數。 更好地利用存儲過程

2

您可以使用參數,而不是:

int currTopicID = Convert.ToInt32(id.Text); 

SqlCommand cmd = new SqlCommand("INSERT INTO post VALUES(@currTopicID)", con); 

cmd.Parameters.Add("@currTopicID", SqlDbType.Int).Value = currTopicID.Tostring(); 

//OR cmd.Parameters.AddWithValue("@currTopicID",currTopicID.Tostring()); 

cmd.ExecuteNonQuery(); 

問候

+0

我遇到了這個問題:cmd.Parameters.Add(「@ currTopicID」,SqlDbType.Int,4).Value = currTopicID; 您可以將其分成兩步: cmd.Parameters.Add(「@ currTopicID」,SqlDbType.Int,4); cmd.Parameters [「@ currTopicID」]。Value = currTopicID; – 2011-03-09 05:23:40

+0

是什麼例外? – Crimsonland 2011-03-09 05:26:34

+0

現在不能回憶,但它與不兼容的類型有關。 – 2011-03-09 05:29:15

0

你真的應該使用一個存儲過程的參數。通過這樣做,你將避免SQL注入。

相關問題