C#无法更新ms访问数据库中的记录

时间:2014-02-25 07:23:56

标签: c# ms-access

 Sqlcon.Open();

我的更新在我运行此脚本时不会工作,这是我第一次使用MSACCESS作为数据库,请帮我如何更新,谢谢

var _query = "update [Inventory_tbl] set [Item Name] = ?, [Description] = ?, [Price] = ?, [Stock] = ?  where [Item Code] = ?";

var cmd = new OleDbCommand(_query, Sqlcon) { CommandType = CommandType.Text };
cmd.Parameters.AddWithValue("[Item Code]", getitemcode);
cmd.Parameters.AddWithValue("[Item Name]", getitemname);
cmd.Parameters.AddWithValue("[Description]", getdesc);
cmd.Parameters.AddWithValue("[Price]", getprice);
cmd.Parameters.AddWithValue("[Stock]", Convert.ToString(Convert.ToInt32(myStock) - Convert.ToInt32(getquantity)));
var ctr = cmd.ExecuteNonQuery();
Sqlcon.Close();
MessageBox.Show(ctr.ToString());
}

1 个答案:

答案 0 :(得分:1)

在MS-Access中,您声明的{{1>} 订单添加了参数。

对于您的情况,您将OleDbCommand列添加到我认为最后属于getitemcode的{​​{1}}列。

来自OleDbCommand.Parameters property

  

OLE DB .NET提供程序不支持传递的命名参数   SQL语句或由a调用的存储过程的参数   CommandType设置为Text时的OleDbCommand。在这种情况下,   必须使用问号(?)占位符。例如:

Item Name

  

因此,将OleDbParameter对象添加到的顺序   OleDbParameterCollection必须直接对应于的位置   命令文本中参数的问号占位符。

我认为你的代码应该是这样的;

Item Code