如果表中已经存在行的值,我想更新它
Posted
技术标签:
【中文标题】如果表中已经存在行的值,我想更新它【英文标题】: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 在参数化相同的错误后。 【参考方案1】:INSERT ... ON DUPLICATE KEY UPDATE
是INSERT
语句的 MYSQL 扩展,如果它发现重复的唯一键或主键,将改为执行 UPDATE
。
检查您的表结构以查看该表是否有任何唯一键或主键。
【讨论】:
产品名是主键以上是关于如果表中已经存在行的值,我想更新它的主要内容,如果未能解决你的问题,请参考以下文章