Razor ';列名无效';使用webmatrix 3.0时sqlce update命令出错

Razor ';列名无效';使用webmatrix 3.0时sqlce update命令出错,razor,webmatrix,Razor,Webmatrix,我正在尝试使用cshtml和sqlce使用WebMatrix 3.0制作一个简单的web应用程序 表“person”包括以下列(第一列是主键和标识,其他两列允许空值): 我试图制作一个简单的表单来更新ID=ID行中的“firstmi”和“last”字段 当页面加载时,我设置var id=Request[“id”]。变量“personFirstMI”和“personLast”分别设置为两个文本框的值 运行以下代码时: db.Execute("UPDATE person SET firstmi=pe

我正在尝试使用cshtml和sqlce使用WebMatrix 3.0制作一个简单的web应用程序

表“person”包括以下列(第一列是主键和标识,其他两列允许空值):

我试图制作一个简单的表单来更新ID=ID行中的“firstmi”和“last”字段

当页面加载时,我设置
var id=Request[“id”]
。变量“personFirstMI”和“personLast”分别设置为两个文本框的值

运行以下代码时:

db.Execute("UPDATE person SET firstmi=personFirstMI, last=personLast WHERE ID=id");
以下错误结果:

列名无效。[节点名称(如果有)=,列名=personFirstMI]

有人知道我做错了什么吗


我不明白“节点名”指的是什么。我不明白为什么我的SQL语法中的列名会被读为“personFirstMI”而不是“firstmi”。如果我试图将“firstmi”设置为“personFirstMI”,其中“ID”等于“ID”,那么我的理解是这将导致“ID”行中的“firstmi”字段被设置为“personFirstMI”.

您需要在SQL中使用@0、@1、@2、@3等形式的参数标记,每次递增一个,然后将值传递给Execute方法:

var sql = "UPDATE person SET firstMi = @0, last = @1 WHERE ID = @2";
db.Execute(sql, personFirstMI, personLast, id);

有关在ASP.NET网页中使用数据的详细信息,请参阅本教程:

Wow。非常感谢。我尝试了大约50种不同的参数和变量,只是因为我不知道它们是按照Execute命令中列出的顺序递增的(我认为它们是按照我从提交它们的表单中请求它们的顺序列出的)。
var sql = "UPDATE person SET firstMi = @0, last = @1 WHERE ID = @2";
db.Execute(sql, personFirstMI, personLast, id);