我提出了一个申请,以保持我们的仓库更容易使用。
我创建了两种方法来更改数据库中的一些值。一个用于更改项的库存,另一个用于更改存储此项的位置。
由于某种原因,当我使用第一种方法时,程序会改变股票,但是当我使用第二种方法时,它不会改变任何东西.
我真的不明白因为它们几乎是一样的。
有人看到我看不到的东西吗?
public void ChangeStock(double value, string Number)
{
string ConnString = "[connectionstring]";
string SqlString = "Update Item Set Stock = ? WHERE ItemNumber= ?";
using (OleDbConnection conn = new OleDbConnection(ConnString))
{
using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("Stock", value);
cmd.Parameters.AddWithValue("ItemNumber", Number);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
public void ChangeLocation(string Location, string Number)
{
string ConnString = "[connectionstring]";
string SqlString = "Update Item Set Location = ? WHERE ItemNumber = ?";
using (OleDbConnection conn = new OleDbConnection(ConnString))
{
using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("ItemNumber", Number);
cmd.Parameters.AddWithValue("Location", Location);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}发布于 2016-08-04 14:16:47
由于您使用的是OleDb,Access将忽略参数名。因此,您必须按照预期的顺序提供参数值,这是参数占位符在CommandText中出现的顺序。
在第一个UPDATE情况下,您将按照正确的顺序提供参数值。但是,在第二种情况下,与Access所期望的情况相比,您将按相反的顺序提供它们。用这个命令..。
cmd.Parameters.AddWithValue("Location", Location);
cmd.Parameters.AddWithValue("ItemNumber", Number);https://stackoverflow.com/questions/38769649
复制相似问题