Другой пример:
var sql = StringBuilder();
sql.Append "Insert Table1(a)"
sql.AppendFormat "\nSelect @a"
sql.AppendFormat "\nUnion All Select @b"
sql.AppendFormat "\nUnion All Select @b"
sql.AppendFormat "\nUnion All Select @c"
...
// Set your paramters values
var cmd = new SqlCommand( sql.ToString() );
SqlCommand.Parameters.Add(new SqlParameter("@b", aValue));
SqlCommand.Parameters.Add(new SqlParameter("@b", bValue));
SqlCommand.Parameters.Add(new SqlParameter("@c", cValue));
...
cmd.ExecuteNonQuery();
Разрывы строки не нужны. Они только там, так что вывод красиво отформатирован. Если вы поместите свои значения в хеш-таблицу, вы можете сделать это в цикле следующим образом:
var values = new Hashtable();
values.Add("a", avalue);
values.Add("b", bvalue);
values.Add("c", cvalue);
...
var sql = StringBuilder();
var cmd = new SqlCommand();
foreach( var value in values )
{
if (sql.Length == 0)
{
sql.Append "Insert Table1(columnName)"
sql.AppendFormat "\nSelect @" + value.Key
cmd.Parameters.Add(new SqlParameter("@" + value.Key, value.Value));
}
else
{
sql.AppendFormat "\nUnion All Select @" + value.Key
cmd.Parameters.Add(new SqlParameter("@" + value.Key, value.Value));
}
}
cmd.CommandText = sql.ToString()
cmd.ExecuteNonQuery();