'列名无效' sqlce update命令中的错误,使用webmatrix 3.0

时间:2014-09-07 03:50:44

标签: razor webmatrix

我正在尝试使用cshtml和sqlce在WebMatrix 3.0上创建一个简单的Web应用程序。

表“person”包括这些列(第一个是主键和标识,另外两个允许NULL值):

ID
firstmi
last

我正在尝试创建一个简单的表单来更新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”WHERE“ID”等于“id”,那么我的理解是这应该导致“ID”行中的“firstmi”字段被设置为等于“personFirstMI”。

1 个答案:

答案 0 :(得分:2)

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

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

有关在ASP.NET网页中使用数据的更多信息,请参阅本教程:http://www.asp.net/web-pages/tutorials/data/5-working-with-data