我正在尝试使用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”。
答案 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