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

Posted

技术标签:

【中文标题】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 【发布时间】:2016-08-04 14:05:53 【问题描述】:

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

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

【问题讨论】:

是不是参数顺序不对? 【参考方案1】:

由于您使用的是 OleDb,Access 会忽略参数 names。因此,您必须按照 Access 期望的顺序提供参数 values,即参数 placeholders 在 CommandText 中出现的顺序。

在第一个UPDATE 案例中,您以正确的顺序提供参数值。但是,在第二种情况下,您提供的顺序与 Access 期望的顺序相反。使用这个顺序...

cmd.Parameters.AddWithValue("Location", Location);
cmd.Parameters.AddWithValue("ItemNumber", Number);

【讨论】:

非常感谢!我不知道我怎么会错过。

以上是关于ASP.NET MVC C# Razor SQL 1 of 2 几乎相同的更新查询不起作用的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc学习

在 asp.net mvc razor 应用程序中将 Datetime C# 类型转换为 Date javascript

[ASP.NET MVC 小牛之路]03

使用razor/asp.net mvc3生成静态html页面?

Razor 单选按钮不起作用(ASP.NET MVC)

OUTPUT INSERTED Id/SCOPE_IDENTITY() 在 C# (ASP.NET Core Razor Pages) SQL 查询中返回 null,在 SQL Server Mana