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]);
}