【问题标题】:I want to update the Value of a row if it already exist in table如果表中已经存在行的值,我想更新它
【发布时间】:2021-01-04 08:40:10
【问题描述】:

如果产品名称已经在表中,我想更新 Qty 的值。

            {
                connection.Open();

                OleDbCommand command = new OleDbCommand();
                command.Connection = connection;
                command.CommandText = "insert into Product ([Name],[Category],[Supplier],[Brand],[HSNCode],[SKUCode],[CP],[SP],[Psize],[Colour],[ProductImage],[BarcodeImage],[InsertionDate],[QTY]) values ('" + txtProduct.Text + "', '" + comboBoxCategory.Text + "', '" + comboBoxSupplier.Text + "', '" + txtBrand.Text + "', '"+txtHSN.Text+"','"+txtSKU.Text+"','"+txtCP.Text+"','"+txtSP.Text+"','"+comboBoxSize.Text+"','"+checkedListBoxColour.Text+"','"+ProductPictureBox.Image+"','"+BarcodePictureBox.Image+"', '"+ DateTime.Now.Date+ "','"+QtyTextBox.Text+ "')  ON DUPLICATE KEY UPDATE [QTY] = VALUES(QTY+1);";
                command.ExecuteNonQuery();

                MessageBox.Show("Saved successfully");
                MessageBox.Show(txtProduct.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error " + ex);
            }

我试过这个查询,但它给出了缺少分号的错误。

【问题讨论】:

  • 您确定您正在运行 MySQL 吗?列名周围的方括号表示 SQL Server(或者可能是 SQLite)。
  • 请参数化您的查询...
  • @GMB 我正在使用 ms 访问数据库
  • This answer 显示了 Access 的一般方法(不支持 ON DUPLICATE KEY)。答案是针对 Python 的,不过翻译成 C# 代码应该不会太难。
  • @BrootsWaymb 在参数化相同的错误后。

标签: c# sql .net database ms-access


【解决方案1】:

INSERT ... ON DUPLICATE KEY UPDATEINSERT 语句的 MYSQL 扩展,如果它发现重复的唯一键或主键,将改为执行 UPDATE

检查您的表结构以查看该表是否有任何唯一键或主键。

【讨论】:

  • 产品名是主键
猜你喜欢
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
相关资源
最近更新 更多