Обновление количества через SQL - PullRequest
0 голосов
/ 07 декабря 2010

Я использую приведенный ниже код для обновления столбца «Количество» в моей таблице, однако я думаю, что, поскольку выбор и обновление находятся внутри цикла foreach, он обновляет все продукты.

Кроме того, продукты также обновляются при перезагрузке страницы, и сумма увеличивается в зависимости от того, сколько раз пользователь нажимает кнопку добавления. Например. Нажмите кнопку «Добавить», вдвое увеличивая количество на два.

В идеале мне нужно иметь возможность использовать ItemID вне цикла foreach, но не могу.

Есть предложения?

Код:

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 голосов
/ 07 декабря 2010

Код внутри цикла фактически не зависит от foreach.Я имею в виду, что мы зацикливаемся на Session["UserSession"], но команда SQL ничего не делает со значениями в Session["UserSession"].

Все, что вам нужно сделать, это закомментировать foreachстрока и код должны выполняться нормально.

Где-то выше кода, который вы разместили, будут переменные параметров (вероятно) с именами типа CurentUserCommand, ItemIdCommand (их типы будут SqlCommand или DBCommand) - это то, чтоОператор SQL использует.

0 голосов
/ 07 декабря 2010

Вы, вероятно, можете использовать функцию IN () в SQL.

Это может принимать либо набор результатов, либо список через запятую.

UPDATE tblUserItems
SET Quantity = Quantity+1
WHERE UserID = @CurrentUser
AND ItemID IN(123,456,789,001)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...