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

标签 c# mysql listbox

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

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

我正在尝试将数据库中保存的产品库存数量减去购物车中列出的产品数量。

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

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语句应该采用这样的格式

UPDATE QuizonVet.Product SET numberofstocks=(numberofstocks-123) where productname='someProduct'

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

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

UPDATE QuizonVet.Product SET numberofstocks=(numberofstocks-123 324 345) where 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();
}

关于c# - 如何将列表框中列出的产品数量直接减去到我的产品数据库中? (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47901272/

相关文章:

c# - 列表框更新#2

c# - 无法读取 Datagrid WPF 中嵌套的自定义列表框值

c# - 在通用函数中键入特定行为

c# - AJAX仅适用于页面刷新

c# - 使用 .Net Framework .4.5.2 将消息发送到 Azure 服务总线队列

mysql - 从多个表中选择数据并将其放入一行

php - 日期年份错误

php - 简化 PHP 中的查询

c# - 使用 linq 查询填充列表框 - 值未设置

c# - 使用序列化从 XML 文件读取到 C# 类