我有以下我要運行SQL語句:使用價值
string sql = @"DECLARE @a udt;" +
"INSERT INTO @a (id) VALUES @params;";
我有以下的整數數組:
int[] array1 = {10,20,30,40,50,60};
這是重要的不是上述數組大小在我的程序中是動態的。
我想,這樣的SQL在SqlCommand
正在執行的SQL語句從陣列添加值到@params
看起來是這樣的:
sql = @"DECLARE @a udt;" +
"INSERT INTO @a (id) VALUES (10),(20),(30),(40),(50),(60);" +
"EXEC sp @a;";
我曾嘗試以下除其他外,並保持獲得例外:
SqlConnection con = new SqlConnection("connectionString");
SqlCommand cmnd = new SqlCommand(sql, con);
for (int i = 0; i < array1.Count; i++)
{
cmnd.Parameters.AddWithValue("@params" , array1[i]);
}
con.open().
cmnd.ExecuteNonQuery();
請有人請解釋我做錯了什麼。我還需要確保防止SQL注入。
你不能這樣做,基本上是這樣。您將不得不動態生成SQL,或者使用不同的參數值多次執行相同的(單個)插入操作。 – Blorgbeard
@Blorgbeard我可以做些什麼,比如'... VALUES @ param1,@ param2 ...'而不是'... VALUES(10),(20)...'? –
有沒有理由不能只運行插入X次? –