我使用下面的代码来更新表格中的“数量”列,但我认为因为选择和更新位于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();
}
答案 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语句所使用的。