我想在smame批处理中执行几个插入来加速程序。 是否可以执行以下操作?
Insert Into Table1 (a) Values (@a);
Insert Into Table2 (b) Values (@b);
Insert Into Table3 (c) Values (@c);
如果可能的话,我应该如何将参数传递给SQL参数?
基本上我想做this example但Insert
代替Select
答案 0 :(得分:0)
SqlCommand cmd = new SqlCommand(@"Insert Into Table1 (a) Values (@a);Insert Into Table2 (b Values (@b);Insert Into Table3 (c) Values (@c);", connection);
// Set your paramters values
SqlCommand.Parameters.Add(new SqlParameter("@a", aValue));
SqlCommand.Parameters.Add(new SqlParameter("@b", bValue));
SqlCommand.Parameters.Add(new SqlParameter("@c", cValue));
cmd.ExecuteNonQuery();
答案 1 :(得分:0)
另一个例子:
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();