繁体   English   中英

ASP.NET MVC C#Razor SQL 1 of 2几乎相同的更新查询不起作用

[英]ASP.NET MVC C# Razor SQL 1 of 2 almost identical Update Queries doesn't work

我正在申请以使我们的储藏室更易于使用。
我使用两种方法来更改数据库中的某些值。 一个可以更改物料的库存,另一个可以更改物料的存储位置。
由于某种原因,当我使用第一种方法时,程序会更改库存,但是当我使用第二种方法时,它将不会更改任何内容...
我真的不明白,因为它们几乎是相同的。
有没有人看到我看不到的东西?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM