Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server RazorSQL-使用变量作为列名的Update语句动态语句转换_Sql Server_Asp.net Mvc_Razor_Dynamic Sql - Fatal编程技术网

Sql server RazorSQL-使用变量作为列名的Update语句动态语句转换

Sql 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

这样做的原因是一个供少数用户使用的内部应用程序,不需要安全性

我在SQL中看到了很多关于这个主题的帖子,但我不能在Razor中翻译它

我试图在Razor中创建一个更新语句,其中列由用户选择

如何将其转换为动态语句?像Exec()或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);
通过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