C# 如何为表中的多行插入编写参数化查询?

C# 如何为表中的多行插入编写参数化查询?,c#,mysql,sql,.net,bulkinsert,C#,Mysql,Sql,.net,Bulkinsert,我有一个SQLCommand对象,其CommandText如下: insert into [table] (field1, field2, field3) select (value11, value12, value13), select(value21, value22, value23), select(value20001,value20002)(value20003) 我将所有这些值存储在这些对象的列表中。您可以将它们视为6000个变量(不是常数,而是用

我有一个
SQLCommand
对象,其
CommandText
如下:

 insert into [table] (field1, field2, field3) 
    select (value11, value12, value13), 
    select(value21, value22, value23),
    select(value20001,value20002)(value20003)
我将所有这些值存储在这些对象的列表中。您可以将它们视为6000个变量(不是常数,而是用户提供的),这是我与


如何防止SQL注入并使此查询参数化?

您可以使用c代码检查SQL注入

适用于SQL SERVER 2008或更高版本

INSERT INTO TestTable (id, name) VALUES (1, 'test'), (2, 'test 2'), (3, 'test 2');
如果您有多个insert,那么可以执行类似的操作

for(int i=0; i<dt.Rows.Count; i++)
{

cmd.Parameters.AddWithValue("@Parameter1", dt.Rows[0][i]);
cmd.Parameters.AddWithValue("@Parameter2", dt.Rows[0][i]);
cmd.Parameters.AddWithValue("@Parameter3", dt.Rows[0][i]);

}

for(int i=0;iYou可能想看一看,但这里的参数将被覆盖……我希望所有2000*3参数都是1 CommandText的一部分。@user2694330为什么?这没有意义。对象列表在进入数据库后基本上是一组行。它们会反复使用同一组参数。
for(int i=0; i<dt.Rows.Count; i++)
{

cmd.Parameters.AddWithValue("@Parameter1", dt.Rows[0][i]);
cmd.Parameters.AddWithValue("@Parameter2", dt.Rows[0][i]);
cmd.Parameters.AddWithValue("@Parameter3", dt.Rows[0][i]);

}