如何更新数据库中的库存数量

本文关键字:数据库 何更新 更新 | 更新日期: 2023-09-27 18:01:45

我有windows应用程序来添加购买信息。在purchase被添加到数据库之前,用户从组合框中选择项目并添加到列表框中。当用户点击添加购买时,数据库中会有一个或多个项目。

这些商品的名称与数据库中的产品名称完全匹配。

我想获得列表框中每个项目的字符串,然后编写sql查询,减少数据库中的项目数量。总数量存储在quantity列下的Product表中。

有人有想法来完成这项任务吗?

我正在尝试将列表框项的字符串逐个传递给此方法

 public string Update(string product)
        {
            // Create connection object
            int ix = 0;
            string rTurn = "";
            OleDbConnection oleConn = new OleDbConnection(connString);
            try
            {
                oleConn.Open();
                string sql = "UPDATE [Product] SET [Quantity]=[Quantity] - 1 " + " WHERE [Product Name]= " + product;
                OleDbCommand oleComm = new OleDbCommand(sql, oleConn);
                oleComm.Parameters.Add("@product", OleDbType.Char).Value = product;
                ix = oleComm.ExecuteNonQuery();
                if (ix > 0)
                    rTurn = "Stock Updated";
                else
                    rTurn = "Update Failed";
            }
            catch (Exception ex)
            {
            }
            finally
            {
                oleConn.Close();
            }
            return rTurn;
        }

上面的方法将从下面的方法获取产品名称:

 public string updateStock()
        {
            string listItem = string.Empty;
            foreach (var listBoxItem in listBox1.Items)
            {

                if (listBox1.Items.IndexOf(listBoxItem) < listBox1.Items.Count - 1)
                {
                    listItem = listBox1.Items.ToString();
                }
            }
            return listItem;
        }
我将从按钮事件处理程序中调用这段代码
Update(updateStock());

如何更新数据库中的库存数量

你可以尝试这样做:

public void UpdateStock()
{
    foreach (var listBoxItem in listBox1.Items)
    {
        string result = Update(listBoxItem.ToString());
    }
}
public string Update(string product)
{
    // Create connection object
    string rTurn = "";
    OleDbConnection oleConn = new OleDbConnection(connString);
    try
    {
        oleConn.Open();
        string sql = "UPDATE [Product] SET [Quantity]=[Quantity] - 1 WHERE [Product Name] = @product";
        OleDbCommand oleComm = new OleDbCommand(sql, oleConn);
        oleComm.Parameters.Add("@product", OleDbType.VarChar, 50).Value = product;
        oleComm.ExecuteNonQuery();
        rTurn = "Stock Updated";    
    }
    catch (Exception ex)
    {
        rTurn = "Update Failed";
    }
    finally
    {
        oleConn.Close();
    }
    return rTurn;
}

EDIT:您可以在添加参数时轻松指定大小-如上所示。50只是任意的。您应该确保其大小与目标[Product Name]列的大小相同。