2010-12-06 82 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语句正在使用的内容。