我將一個字符串轉換爲整數,然後在我的張貼表中插入這個整數。如何在SQL語句中使用我的代碼中的變量?
int currTopicID = Convert.ToInt32(id.Text);
SqlCommand cmd = new SqlCommand("INSERT INTO post VALUES(currTopicID)", con);
問題是currTopicID沒有被識別爲整數,當我做插入。任何幫助將不勝感激。
我將一個字符串轉換爲整數,然後在我的張貼表中插入這個整數。如何在SQL語句中使用我的代碼中的變量?
int currTopicID = Convert.ToInt32(id.Text);
SqlCommand cmd = new SqlCommand("INSERT INTO post VALUES(currTopicID)", con);
問題是currTopicID沒有被識別爲整數,當我做插入。任何幫助將不勝感激。
你有錯誤的說法。
改用,
SqlCommand cmd = new SqlCommand("INSERT INTO post VALUES("+currTopicID.ToString()+")", con);
或者使用參數化查詢。
在MS SQL中傳遞變量時最好使用參數。 更好地利用存儲過程
您可以使用參數,而不是:
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();
問候
我遇到了這個問題: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
是什麼例外? – Crimsonland 2011-03-09 05:26:34
現在不能回憶,但它與不兼容的類型有關。 – 2011-03-09 05:29:15
你真的應該使用一個存儲過程的參數。通過這樣做,你將避免SQL注入。
使** currTopicID.ToString()** – richardtallent 2011-03-09 05:19:28
@richardtallent謝謝修復它。 – Adeel 2011-03-09 05:20:57
雖然此命令由於轉換操作而相當安全,但將值直接插入命令文本通常是一個壞主意。相反,你應該使用參數。 – 2011-03-09 05:22:16