Foreach with Insert SQL(C#,SQL)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Foreach with Insert SQL(C#,SQL)相关的知识,希望对你有一定的参考价值。

我有值列表:

string[] DataValues

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

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

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

答案

要获得您想要的内容,您可以格式化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();
}

以上是关于Foreach with Insert SQL(C#,SQL)的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server - 在 INSERT 语句中使用 WITH 子句

SQL:with 查询

SQL Insert into with select from multiple tables

Mysql 动态sql foreach 使用案例

SQL插入多行,foreach

Insert Data with C# Driver