我要沿以下行创建多行插入语句:

insert into foo (
    value1,
    value2,
    value3
) values
( "1", "2", "3"),
( "4", "5", "6"),
( "7", "8", "9");

其中要插入的行数是可变的。是否有方法使用IDBCommand参数化构造此查询?

最佳答案

像这样的东西应该行得通。

IDbCommand cmd = new SqlCommand();
StringBuilder sb = new StringBuilder();
sb.Append("insert into foo(col, col2, col3), values");
int parms = 0;

for(int i = 0 ; i<3; i++)
{
    sb.AppendFormat("( @{0}, @{1}, @{2}),", parms, parms + 1, parms + 2);
    cmd.Parameters.Add(new SqlParameter((parms++).ToString(), ""));
    cmd.Parameters.Add(new SqlParameter((parms++).ToString(), ""));
    cmd.Parameters.Add(new SqlParameter((parms++).ToString(), ""));
}
sb.Append(";");
cmd.Parameters;
cmd.CommandText = sb.ToString().Replace(",;", ";");

关于c# - 用于多行插入的IDBCommand参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14758680/

10-10 10:24