Sql server RazorSQL-使用变量作为列名的Update语句动态语句转换
这样做的原因是一个供少数用户使用的内部应用程序,不需要安全性 我在SQL中看到了很多关于这个主题的帖子,但我不能在Razor中翻译它 我试图在Razor中创建一个更新语句,其中列由用户选择 如何将其转换为动态语句?像Exec()或sp_executesqlSql server RazorSQL-使用变量作为列名的Update语句动态语句转换,sql-server,asp.net-mvc,razor,dynamic-sql,Sql Server,Asp.net Mvc,Razor,Dynamic Sql,这样做的原因是一个供少数用户使用的内部应用程序,不需要安全性 我在SQL中看到了很多关于这个主题的帖子,但我不能在Razor中翻译它 我试图在Razor中创建一个更新语句,其中列由用户选择 如何将其转换为动态语句?像Exec()或sp_executesql if(IsPost){ NoEmpl = Request.Form["NoEmpl"]; NoCam = Request.Form["NoCam"]; Day = Request.Form["Day"]; Da
if(IsPost){
NoEmpl = Request.Form["NoEmpl"];
NoCam = Request.Form["NoCam"];
Day = Request.Form["Day"];
Date = Request.Form["Date"];
var db = Database.Open("Schedule");
var insertCommand = "UPDATE AtiTruck SET " + NoCam + "=@0 WHERE Day=@1 AND Date >= @2";
db.Execute(insertCommand, NoEmpl, Day, Date);}
var insertCommand = "UPDATE AtiCamion SET " + NoCam + "=@1 WHERE Day=@2 AND Date >= @3";
db.Execute(insertCommand, "NoCam", NoEmpl, Day, Date);
通过NoCam表单输入选择设置NoCam的。。。其值必须用NoEmpl(@0)表单输入填充
谢谢我终于明白了,没有使用Exec()或sp_sp_executesql
if(IsPost){
NoEmpl = Request.Form["NoEmpl"];
NoCam = Request.Form["NoCam"];
Day = Request.Form["Day"];
Date = Request.Form["Date"];
var db = Database.Open("Schedule");
var insertCommand = "UPDATE AtiTruck SET " + NoCam + "=@0 WHERE Day=@1 AND Date >= @2";
db.Execute(insertCommand, NoEmpl, Day, Date);}
var insertCommand = "UPDATE AtiCamion SET " + NoCam + "=@1 WHERE Day=@2 AND Date >= @3";
db.Execute(insertCommand, "NoCam", NoEmpl, Day, Date);
我想我看得太远了
谢谢你我不知道你为什么要在HTML页面中进行任何更新。。。所有更新都应该在控制器或数据访问层中完成。通过这种方式,您可以验证用户数据,以确保有效数据进入数据库。web开发规则1。。。永远不要信任来自用户输入的数据。用户始终可以操作数据。所有受信任的用户。。。别担心好的。。。乍一看,您的SQL是不正确的。看起来您的@1指向NoEmpl,但在SQL中是“WHERE Day=@1”。。。我假设那天应该指向@2,日期应该是@3。。。你的参数序列是NoTruck=@0,NoEmpl=@1,Day=@2,Date=@3Yea。。我试图解释我的需要。我做了这个声明,看起来很接近<代码>var insertCommand=“UPDATE AtiCamion SET”+NoCam+“=@0,其中日期=@1,日期>=@2”;db.Execute(插入命令、NoCam、NoEmpl、日期)代码>我现在在db.execute行中有错误。它说标记“3279”有误。好的是3279是“NoCam”变量的请求表单的结果,但我不知道如何正确创建execute