我正在申请以使我们的储藏室更易于使用。
我使用两种方法来更改数据库中的某些值。一个可以更改物料的库存,另一个可以更改物料的存储位置。
由于某种原因,当我使用第一种方法时,程序会更改库存,但是当我使用第二种方法时,程序将不会更改任何东西...
我真的不明白,因为它们几乎是相同的。
有没有人看到我看不到的东西?
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();
}
}
}
由于您使用的是OleDb,因此Access会忽略参数名称。因此,您必须按Access期望的顺序提供参数值,这是参数占位符在CommandText中出现的顺序。
在第一种UPDATE
情况下,您将以正确的顺序提供参数值。但是,在第二种情况下,您将以与Access期望相反的顺序提供它们。使用此命令...
cmd.Parameters.AddWithValue("Location", Location);
cmd.Parameters.AddWithValue("ItemNumber", Number);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句