【发布时间】:2018-06-02 17:34:55
【问题描述】:
首先,我并不是很喜欢硬编码,我确实尝试过寻找解决问题的方法,但我没有得到一些解释。或者也许这不是我的编码方式,所以我无法理解。
从技术上讲,我有 3 个 lisboxes 用于产品的数量、产品名称和价格。将产品添加到购物车后,它会自动在列表框中向下列出。
我正在尝试将数据库中保存的产品库存数量减去购物车上列出的产品数量。
我的代码在我只购买一种产品时有效,但当我尝试购买两种或更多产品时,我的产品数据库中没有任何内容。
附言。抱歉,如果我错误地发布了我的问题,这只是我第一次在这里发布。提前谢谢!
string item = string.Empty;
int quantity = 0;
for (int i = 0; i <= LBItemName.Items.Count - 1; i++) {
item += Convert.ToString(LBItemName.Items[i]); }
for (int j = 0; j <= LBItemQuantity.Items.Count - 1; j++) {
quantity += Convert.ToInt32(LBItemQuantity.Items[j]); }
MySqlCommand tryCommand = new MySqlCommand("UPDATE QuizonVet.Product SET numberofstocks=(numberofstocks-'" + quantity + "') where productname='" + item + "';", myConnection);
myReader = tryCommand.ExecuteReader();
myReader.Close();
【问题讨论】:
-
如果您使用调试器查看当您有 2 个或更多项目时命令字符串的样子,应该很清楚。您想要的是对于每个销售的产品,您希望将数据库中的数量减少相应的数量。假设我买了 2 个苹果和 3 个橙子,商品变为
"appleorange",数量变为 5。结果是您试图将名称为"appleorange"的商品的数量减去 5,但该商品不存在,因此您的数据库中没有任何变化。 -
最简单的方法实际上只是为每个项目更新一次数据库,因为不同的项目可以不同地更新值。
-
我明白了。我终于明白了我的代码是如何工作的。谢谢你……但是我想让我的系统做的事情不是一键点击吗?如果我一次做一件,把它变成“购物车”不是没有意义吗?
-
除了使用 case 语句之外,我想不出一种简单的方法