2010-12-06 49 views
0

我使用下面找到的代碼更新我的表中的「數量」列,但我認爲,因爲選擇和更新是在foreach循環內,它正在更新所有產品。通過SQL更新數量

此外,產品也會在頁面重新加載時更新,並且根據用戶點擊添加按鈕的次數增加金額。例如。點擊添加按鈕,每次增加數量兩次。

理想情況下,我需要能夠使用foreach循環外的ItemID,但不能。

有什麼建議嗎?

代碼:

foreach (UserItem ItemID in (List<UserItem>)Session["UserSession"]) 
{ 
    ConclusionPage.InsertCommand = "IF EXISTS (SELECT ItemID FROM tblUserItems WHERE UserID='@CurrentUser' AND ItemID='@ItemID') UPDATE tblUserItems SET Quantity = Quantity+1 WHERE (UserID = '@CurrentUser') AND (ItemID = '@ItemID')"; 
    ConclusionPage.Insert();     
} 
+2

[使用Foreach循環中的變量]可能的重複(http://stackoverflow.com/questions/4369050/using-a-variable-from-a-foreach-loop) – Hogan 2010-12-06 21:28:31

+2

數量應該何時更新? – 2010-12-06 21:39:08

回答

0

你大概可以使用()函數中的SQL。

這可以採用結果集或逗號分隔列表。

UPDATE tblUserItems 
SET Quantity = Quantity+1 
WHERE UserID = @CurrentUser 
AND ItemID IN(123,456,789,001) 
0

循環內的代碼實際上是獨立於foreach。我的意思是我們在Session["UserSession"]上循環,但SQL命令對Session["UserSession"]中的值沒有做任何處理。

您應該只需注意foreach一行,代碼應該正常執行。

在你發佈的代碼之上的某處,會有參數變量(可能)被命名爲CurentUserCommand,ItemIdCommand(它們的類型將是SqlCommand或DBCommand) - 這就是SQL語句正在使用的內容。