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

时间:2017-12-20 07:58:30

标签: c# mysql listbox

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

从技术上讲,我有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();

1 个答案:

答案 0 :(得分:0)

这里可能存在一些问题

首先,Sql Update语句应采用此格式

  

更新QuizonVet.Product SET numberofstocks =(numberofstocks-123)其中   产品名=&#39; someProduct&#39;

我假设列表中的每个项目与其他列表中的索引完全相同

在您的代码中尝试将多个产品一起添加,它将如何知道更新哪个产品的价值?最好看起来像这样...

  

更新QuizonVet.Product SET numberofstocks =(numberofstocks-123 324 345)其中   productname =&#39; someProduct someProduct someProduct&#39;

所以我想你可以做的是为产品列表中的每个项目创建一个新的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();
}