如何将列表框中列出的产品数量直接减去我的产品数据库? (MySQL的)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将列表框中列出的产品数量直接减去我的产品数据库? (MySQL的)相关的知识,希望对你有一定的参考价值。

首先,我并没有真正进入硬编码等等,我确实尝试寻找解决问题的方法,但我没有得到一些解释。或许这不是我编码我的方式所以我无法理解。

从技术上讲,我有3个lisboxes用于产品的数量,产品名称和价格。将产品添加到购物车时,它会自动在列表框中列出。

我试图减去数据库中保存的产品库存数量,减去购物车上列出的产品数量。

当我只购买一种产品时,我的代码有效,但当我尝试购买2种或更多产品时,我的产品数据库中没有任何内容被删减。

PS。对不起,如果我错误地发布了我的问题,这只是我第一次在这里发帖。先感谢您!

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();
答案

这里可能存在一些问题

首先是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();
}

以上是关于如何将列表框中列出的产品数量直接减去我的产品数据库? (MySQL的)的主要内容,如果未能解决你的问题,请参考以下文章

从不同的记录更新产品表数量

在 Access 中扫描项目时减去数据库中的数量的 VB 代码

使用react,react-router和redux进行分页

亚马逊 API 调用以获取页面上列出的产品数量

修改 MS Access 列表框中的项目列表

SQL的一些查询语句