2012-04-06 177 views
2

我已經徹底搜索,但找不到我的列數據到我已使用SQL UPDATE語句初始化的變量的SET如何將變量傳遞給SqlCommand

下面是一段代碼,導致問題:

int maxId; 
SqlConnection dataConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["RegConnectionString"].ConnectionString) ; 
SqlCommand dataCommand = new SqlCommand("select max(UserID) from Registration", dataConnection) ; 
dataConnection.Open(); 
maxId = Convert.ToInt32(dataCommand.ExecuteScalar()); 
string Id = maxId.ToString(); 

// this next line is not working 
SqlCommand _setvin = new SqlCommand("UPDATE Registration SET VIN=maxId , Voted=0 WHERE UserID=maxId", dataConnection); 
_setvin.ExecuteNonQuery(); 

dataConnection.Close(); 

請指導我如何,我可以糾正上面的註釋行。

回答

1

我想你想做到這一點:

var _setvin = new SqlCommand("UPDATE Registration SET VIN = @maxId, Voted = 0 WHERE UserID = @maxId", dataConnection); 
_setvin.Parameters.AddWithValue("@maxId", maxId); 
_setvin.ExecuteNonQuery(); 

您需要首先改變你的SQL語句以包括maxId的參數;我在你的SQL中調用@maxId。然後,您需要爲該命令提供該參數的值。這是通過Parameters.AddWithValue()方法完成的。

+0

與烏爾其解決方案給錯誤「無效列名」 .. **請注意**是maxId是變量名沒有列名... **和我想要設置名稱爲VIN的列,其值包含在maxId中** – Sana 2012-04-06 12:30:08

+0

@Sana我使用'@ maxId'作爲變量,而不是列。這裏涉及的列是'VIN','Voted'和'UserID'。 – Yuck 2012-04-06 12:31:17

+0

它不能在這裏工作......「無效的列名'maxId'異常正在解決你的問題jx給了 – Sana 2012-04-06 12:36:50

2

也許是這樣的:

SqlCommand _setvin = new SqlCommand("UPDATE Registration SET [email protected], Voted=0 WHERE [email protected]", dataConnection); 
_setvin.Parameters.Add("@maxId", SqlDbType.Int).Value = maxId; 
_setvin.ExecuteNonQuery(); 
+0

whats「cmd」here – Sana 2012-04-06 12:32:45

+0

對不起。..更新了答案 – Arion 2012-04-06 12:38:43

+0

非常感謝... :) – Sana 2012-04-06 12:57:24