通过SQL更新数量

时间:2010-12-06 21:16:05

标签: c# asp.net sql

我使用下面的代码来更新表格中的“数量”列,但我认为因为选择和更新位于foreach循环中,它正在更新所有产品。

此外,还会在重新加载页面时更新产品,并根据用户点击添加按钮的次数来增加数量。例如。每次单击数量增量两次的添加按钮。

理想情况下,我需要能够在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 个答案:

答案 0 :(得分:0)

您可以在SQL中使用IN()函数。

这可以采用结果集或逗号分隔列表。

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

答案 1 :(得分:0)

循环内的代码实际上独立于foreach。我的意思是我们循环Session["UserSession"],但SQL命令对Session["UserSession"]中的值没有任何作用。

您需要做的就是注释掉foreach行,代码应该可以正常执行。

在你发布的代码之上的某个地方,会有一些参数变量(可能)命名为CurentUserCommand,ItemIdCommand(它们的类型将是SqlCommand或DBCommand) - 这就是SQL语句所使用的。