【问题标题】:webmatrix 3 C# SQL Error The parameterized querywebmatrix 3 C# SQL 错误参数化查询
【发布时间】:2016-05-13 19:09:27
【问题描述】:

我在尝试使用应该可以工作的代码更新我的 SQL 数据库时遇到问题,我没有看到问题所在,或者如何修复它。也许一双新的眼睛也许能够指出哪里出了问题。错误 =

"参数化查询 '(@0 nvarchar(3),@1 nvarchar(12),@2 nvarchar(8),@3 nvarchar(4),@4' 需要参数 '@8',它是未提供。”

代码如下:

Truck_Number = Request.Form["Truck_Number"];
Truck_Make = Request.Form["Truck_Make"];        
Truck_Model = Request.Form["Truck_Model"];
Truck_Year = Request.Form["Truck_Year"];
Truck_Vin = Request.Form["Truck_Vin"];
Truck_Empty_Weight = Request.Form["Truck_Empty_Weight"];
Truck_Assigned_To = Request.Form["Truck_Assigned_To"];
Truck_Assigned_Date = Request.Form["Truck_Assigned_Date"];
Truck_Plate_Number = Request.Form["Truck_Plate_Number"];
Truck_IFTA_ID = Request.Form["Truck_IFTA_ID"];
Truck_HUT_ID = Request.Form["Truck_HUT_ID"];
Truck_Oregon_ID = Request.Form["Truck_Oregon_ID"];
Truck_New_Mexico_ID = Request.Form["Truck_New_Mexico_ID"];
Truck_Kentucky_ID = Request.Form["Truck_Kentucky_ID"];
Truck_Payment_Start_Date = Request.Form["Truck_Payment_Start_Date"];
Truck_Payment_Due_Date = Request.Form["Truck_Payment_Due_Date"];
Truck_Payment_Amount = Request.Form["Truck_Payment_Amount"];
Truck_Total_Payment = Request.Form["Truck_Total_Payment"];
Truck_Commission = Request.Form["Truck_Commission"];

var updateQueryString =@"UPDATE Trucks SET Truck_Number=@0,
Truck_Make=@1,
Truck_Model=@2,
Truck_Year=@3,
Truck_Vin=@8,
Truck_Empty_Weight=@5,
Truck_Assigned_To=@6,
Truck_Assigned_Date=@7,
Truck_Plate_Number=@8,
Truck_IFTA_ID=@9,
Truck_HUT_ID=@10,
Truck_Oregon_ID=@11,
Truck_New_Mexico_ID=@12,
Truck_Kentucky_ID=@13,
Truck_Payment_Start_Date=@14,
Truck_Payment_Due_Date=@15,
Truck_Payment_Amount=@16,
Truck_Total_Payment=@17,
Truck_Commission=@18 WHERE ID=@19";
db.Execute(updateQueryString,Truck_Number,Truck_Make,Truck_Model,Truck_Year,Truck_Vin,Truck_Empty_Weight,Truck_Assigned_To,Truck_Assigned_Date,Truck_Plate_Number,Truck_IFTA_ID,Truck_HUT_ID,Truck_Oregon_ID,Truck_New_Mexico_ID,Truck_Kentucky_ID,Truck_Payment_Start_Date,Truck_Payment_Due_Date,Truck_Payment_Amount,Truck_Total_Payment,Truck_Commission,ID);
 Response.Redirect("truck_list.cshtml");

任何帮助找出问题所在,我将不胜感激!

【问题讨论】:

  • 参数化查询 '(@0 nvarchar(3),@1 nvarchar(12),@2 nvarchar(8),@3 nvarchar(4),@4' 需要参数 '@8 ',未提供。
  • 检查您是否真的有一个表单域,其名称属性为“Truck_Vin”

标签: c# sql asp.net-mvc razor webmatrix


【解决方案1】:

您列出了两次@8,但您缺少@4。

【讨论】:

  • 是的,我忘记放回去了,一开始我以为4的意思应该是8,所以我把4改成了8,但是忘记放回去了,但是仍然得到同样的错误。
【解决方案2】:

Truck_Vin=@8, 应该是Truck_Vin=@4,

【讨论】:

  • 是的,我在我的代码中修复了这个问题,但仍然给出了同样的错误,我认为@4 说应该是@8 所以我将 Truck_Vin=@4 更改为 8 只是为了检查但忘记了在张贴在这里之前把它放回4。虽然它仍然是同样的错误......
  • ok 简单的数学运算:从@0 到@19 有20 个变量对吧?但是从 Request.Form[] 和 获得 19 个值,我认为您应该在 db.Execute() 方法中再传递一个值。
  • 是的,在该块中有 19 个 Request.Form[""] 变量,但最顶部有 1 个,即 var ID= Request["id"] 变量,因为这是一个更新查询它会从 URL 本身的 truck_edit.cshtml?id=2 场景中提取那个。这是列表中的@19,在 db.Execute(updateQueryString,,,,,,,,,,,,,,,,ID) 设置的最后...
  • 我非常努力地重现了您的问题,但没有成功。在其他具有相同问题的帖子中,解决方案是检查 null 并且如果参数为 null,则传递 DBNull.Value。我希望它有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
相关资源
最近更新 更多