Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC#Razor SQL 2个几乎相同的更新查询中的1个没有';行不通_C#_Asp.net_Asp.net Mvc_Ms Access_Razor - Fatal编程技术网

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);

参数的顺序是否错误?非常感谢!我不知道我怎么会错过这个。