Foreach with Insert SQL(C#,SQL)

问题描述 投票:0回答:1

我有值列表:

string[] DataValues

现在我想把所有的值都插入到insert中:

string myInsert = "Insert into table1(col1, col2, col3....col4) values (DataValues[0],DataValues [1], DataValues[2]....)

有可能以某种方式使用foreach?

c# sql visual-studio insert
1个回答
2
投票

要获得您想要的内容,您可以格式化DataValues,如下所示:

var paramList = string.Join(",",DataValues.Select(x=>string.Format("'{0}'",x)).ToArray()

我认为你对列列表有相同的看法。

但是不要这样做

这将使你的代码容易出现sql注入你应该为每个值声明参数并通过参数使用它。

var parameters = string.Join(",",DataValues.Select((x,i)=>"@param"+i));
var myInsert = string.Format("Insert into table1({0}) values ({1})", columns, parameters);

using (SqlConnection connection = new SqlConnection(/* connection info */))
using (SqlCommand command = new SqlCommand(sql, connection))
{
    for(var i=0; i< DataValues.Length ; i++)
    {
       var param = cmd.Parameters.Add("@param"+i,  SqlDbType.NVarChar, DataValues[i].Length);
       param.Value = DataValues[i];
    }
    command.ExecuteNonQuery();
}
© www.soinside.com 2019 - 2024. All rights reserved.