【问题标题】:Update save in wrong column更新保存在错误的列
【发布时间】:2017-08-22 04:47:46
【问题描述】:

我正在开发 winforms 应用程序并尝试通过单击按钮保存数据以访问数据库。我正在使用更新方法(这不是我第一次使用此方法),但由于某种原因,当我保存数据时,保存在数据库中的值保存错误。 谁能帮我指出我做错了什么或者是否有错误?

     string cb = "UPDATE Config SET features = @features, pricecost = @pricecost, price1 = @price1, tax = @tax, margem = @margem, price = @price, barcode = @barcode WHERE Code = @code";
        cmd = new OleDbCommand(cb, con);
        cmd.Parameters.Add("@features", OleDbType.VarChar).Value = txtFeatures.Text;
        cmd.Parameters.Add("@price", OleDbType.VarChar).Value = txt_Price.Text;
        cmd.Parameters.Add("@price1", OleDbType.VarChar).Value = txt_pricewithouttax.Text;
        cmd.Parameters.Add("@margem", OleDbType.VarChar).Value = txt_margem.Text;
        cmd.Parameters.Add("@pricecost", OleDbType.VarChar).Value = txt_pricecost.Text;
        cmd.Parameters.Add("@tax", OleDbType.VarChar).Value = txt_tax.Text;
        cmd.Parameters.Add("@barcode", OleDbType.VarChar).Value = txtBarcode.Text;
        cmd.Parameters.Add("@code", OleDbType.VarChar).Value = txtCode.Text;

例如,txt_Price.Text 保存在@price1 中,txt_margem.Text 保存在@price...

我能做些什么来解决这个问题?

谢谢

【问题讨论】:

  • 浏览代码并确保您认为与字段匹配的值。这可能是某处的命名不匹配。
  • 有时更新语句的列顺序应与您要更新的字段的排列顺序相同。您是否也可以更新您的问题并向我们展示 Config 表的数据库列架构..
  • 我不确定用于 Access 的 OLE DB 驱动程序是否正确支持命名参数。按参数在查询中出现的顺序添加参数。或者应用一个具有解决方法的助手,例如精选 in this answer
  • 感谢您的快速帮助...@MethodMan 你是对的...问题是顺序。

标签: c#


【解决方案1】:

您正在使用 OleDB 连接到 Access,即所谓的“Microsoft Jet”。它以根本不匹配参数名称而闻名,而是使用序数。

您需要完全按照它们在命令文本中出现的顺序添加参数,并且不能像在 SQL Server 中那样使用相同的参数两次。

注意你的数据类型,存储价格,因为 varchar 是自找麻烦。

【讨论】:

  • 这是我第一次使用 Access 数据库。我在使用 sql 和 mysql 的项目中工作过,没有遇到这个问题。感谢您的帮助
  • 是的,这很痛苦。当您开始在具有访问权限的并发环境中使用事务时,请做好准备应对影响。在这种情况下,一个真正的 RDBMS 肯定是要走的路。
猜你喜欢
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多