【问题标题】:How do I subtract the quantity of my products listed in listbox directly to my database of products? (MySQL)如何将列表框中列出的产品数量直接减去到我的产品数据库中? (MySQL)
【发布时间】: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 语句之外,我想不出一种简单的方法

标签: c# mysql listbox


【解决方案1】:

这里可能有几个问题

首先是Sql Update 语句应该是这样的格式

更新 QuizonVet.Product SET numberofstocks=(numberofstocks-123) 其中 productname='someProduct'

我假设列表中的每个项目都与其他列表中的索引完全对应

在您的代码中试图将多个产品添加在一起,它如何知道哪些值更新了哪些产品?充其量它看起来像这样......

更新 QuizonVet.Product SET numberofstocks=(numberofstocks-123 324 345) 其中 productname='someProduct someProduct someProduct'

所以我猜你可以做的是为产品列表中的每个项目创建一个新的sql 并获取其对应的数量

免责声明我没有测试过这个

代码

for (int i = 0; i <= LBItemName.Items.Count - 1; i++)
{
    var item = Convert.ToString(LBItemName.Items[i]);
    var quantity = Convert.ToInt32(LBItemQuantity.Items[i]);
    MySqlCommand tryCommand = new MySqlCommand($"UPDATE QuizonVet.Product SET numberofstocks=(numberofstocks-{quantity}) where productname='{item}'", myConnection);
    myReader = tryCommand.ExecuteReader();
    myReader.Close();
}

【讨论】:

  • 我已经修复了代码中的一些错误,但现在发生的情况是数量相加然后减去每个产品。
  • 加减是什么意思。 (numberofstocks-{quantity}) 应该只是从 numberofstocks 中减去当前数量。我只是想了解您所看到的
  • 比如我买了2个苹果和3个橙子。然后在我的数据库中,我的产品数据库中减去了 5 个苹果和 5 个橙子。如果我很难解释,我真的很抱歉。
  • 是的,我想我可能误解了您的程序如何使用列表,列表是否同步,即 LBItemName 列表 (ProductName) 的元素 1 是否与 LBItemQuantity 列表中的元素 1 (数量) 相关
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 2021-07-02
  • 2019-11-24
  • 2021-03-07
相关资源
最近更新 更多