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 razor 应用程序中将 Datetime C# 类型转换为 Date javascript
使用razor/asp.net mvc3生成静态html页面?
OUTPUT INSERTED Id/SCOPE_IDENTITY() 在 C# (ASP.NET Core Razor Pages) SQL 查询中返回 null,在 SQL Server Mana