ASP.NET MVC#Razor SQL 2个几乎相同的更新查询中的1个没有';行不通
我正在申请使我们的储藏室更易于使用。ASP.NET MVC#Razor SQL 2个几乎相同的更新查询中的1个没有';行不通,c#,asp.net,asp.net-mvc,ms-access,razor,C#,Asp.net,Asp.net Mvc,Ms Access,Razor,我正在申请使我们的储藏室更易于使用。 我使用了两种方法来更改数据库中的某些值。一个用于更改商品的库存,另一个用于更改该商品的存储位置。 由于某种原因,当我使用第一种方法时,程序会更改库存,但当我使用第二种方法时,它不会更改任何内容… 我真的不明白,因为它们几乎一模一样。 有没有人看到我看不到的东西 public void ChangeStock(double value, string Number) { string ConnString = "[connections
我使用了两种方法来更改数据库中的某些值。一个用于更改商品的库存,另一个用于更改该商品的存储位置。
由于某种原因,当我使用第一种方法时,程序会更改库存,但当我使用第二种方法时,它不会更改任何内容…
我真的不明白,因为它们几乎一模一样。
有没有人看到我看不到的东西
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);
参数的顺序是否错误?非常感谢!我不知道我怎么会错过这个。