【问题标题】:How to deduct product quantity from database after order is proceed订单完成后如何从数据库中扣除产品数量
【发布时间】:2021-09-03 03:54:31
【问题描述】:

我有 2 个 asp.net WebForms,WebForm1 包含一个重定向到 WebForm2 的按钮,WebForm2 包含一个需要填写的联系表单才能继续执行订单。 我在其中有一个连接到数据库的下拉列表,并且根据单击 WebForm1 上的按钮的产品,从数据库中的特定产品中显示当前数量。 订购后,我需要根据下拉列表中选择的产品数量从数据库中减少/扣除产品数量。

下单后如何减少产品数量?

这是填充几个文本框、插入货币并根据单击按钮的 WebForm1 上的哪个产品填充下拉列表“数量”的代码:

       protected void Page_Load(object sender, EventArgs e)
    {
        string productName = Request.QueryString["productname"];
        txt_product13.Text = productName;

        var dictionary = new Dictionary<string, object>
        {
    { "@ProductName", productName }
          };

        var parameters = new DynamicParameters(dictionary);
        string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

        using (var connection = new SqlConnection(CS))
        {
            connection.Open();
            var sql = "SELECT * FROM ProductsDB WHERE ProductName = @ProductName";
            var product = connection.QuerySingle<Product>(sql, parameters);
            CultureInfo EuroCulture = new CultureInfo("fr-FR");
            txt_productprice.Text = product.Price.ToString("c", EuroCulture);

            for (int i = 1; i <= product.Quantity; i++)
            {
                dropdownlist1.Items.Add(new ListItem(i.ToString(), i.ToString()));
            }

        }
     
    }

现在我有这个用于减少的代码,你能告诉我我的错误在哪里吗?为什么它没有从数据库中减少数量?

        string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
        string productName = Request.QueryString["productname"];
        using (var connection = new SqlConnection(CS))
        {
            connection.Open();
            var sql = "UPDATE ProductsDB SET Quantity = WHERE ProductName = @ProductName" + dropdownlist1.SelectedValue + "'";
            connection.Close();
        }

【问题讨论】:

  • 查询无效,因为它无效:UPDATE ProductsDB SET Quantity = WHERE ProductName = @ProductName" + dropdownlist1.SelectedValue + "'"。您不能将列的值设置为 WHERE 子句,并且将下拉列表的值连接到变量的名称也没有什么意义。
  • 学习正确地参数化您的数据库查询。
  • 我修复了查询,但无论我从下拉列表中选择什么值,它都只会递减 1。为什么? var sql = "UPDATE ProductsDB SET Quantity = Quantity - " + dropdownlist1.SelectedValue + " WHERE ProductName = @ProductName";

标签: c# asp.net sql-server dapper


【解决方案1】:

UPDATE ProductsDB SET Quantity = WHERE ProductName = @ProductName" + dropdownlist1.SelectedValue + "'"。

应该是……

UPDATE ProductsDB SET Quantity = (oldValue - QtyOrdered) WHERE ProductName = @ProductName" + dropdownlist1.SelectedValue + "'"。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2017-12-24
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2019-04-21
    相关资源
    最近更新 更多