遍历request.form并使用db.Execute

时间:2019-07-19 10:46:11

标签: c# razor

我的表格很大,尝试仅用几行代码添加数据-而无需声明所有变量。我正在努力尝试的是:

string all_fields="";
string all_params="";
string all_values="";
var i=0;

foreach(string key in Request.Form) {
    @Html.Raw(key + " " + Request.Form[key] + "\n")
    if(all_fields==""){
        all_fields="@"+i;
        all_params=key;
        all_values="\"" + Request.Form[key] + "\"";
    }else{
        all_fields+=", @"+i;
        all_params+=", "+key;
        all_values+=", \"" + Request.Form[key] + "\"";
    }
    i+=1;
}

var db = Database.Open("the_db");
var sql = "INSERT INTO the_table ("+all_fields+") Values("+all_params+")";  

db.Execute(sql, all_values); <--- Don't work

变量的内容如下:

string all_fields="fistname,lastname";
string all_params="@0,@1";
string all_values="\"Jon\", \"Doe\"";

我真的没想到db.Execute(sql, all_values);可以工作。它是一个字符串,但必须是一个对象:https://docs.microsoft.com/en-us/dotnet/api/webmatrix.data.database.execute?view=aspnet-webpages-3.2#WebMatrix_Data_Database_Execute_System_String_System_Object___

如何创建该对象?还是任何其他解决方案?想法?

我知道我只能用SQL做到这一点。但是随后由于sql-injection我将遇到一个安全问题。

0 个答案:

没有答案