Итак, я хочу сделать многострочный запрос на вставку, и мне нужно заменить ключи значениями внутри цикла, где у меня есть значения.
Это работало путем жесткого кодирования значений в запросе.строка, но мне нужно сделать это, используя «cmd.Parameters.AddValue()
или cmd.Parameters.AddWithValue()
», поскольку мне нужно предотвратить SQL-инъекцию.
Итак, мой код выглядит примерно так:
string query = "insert into dbo.Foo (column1, column2, column3) values ";
SqlCommand cmd
foreach (line in rowsArray) {
cmd.Parameters.Clear();
cmd = new SqlCommand(query, cnn); //So, the problem is this override
query += "(@key1, @key2, @key3), ";
cmd.Parameters.AddWithValue("@key1", line.value1);
cmd.Parameters.AddWithValue("@key2", line.value2);
cmd.Parameters.AddWithValue("@key3", line.value3);
}
query = query.Substring(0, query.Length-2); //Last comma
cmd.ExecuteNonQuery();
cnn.Close();
Я хочу ExecuteNonQuery();
вне цикла, чтобы сделать только одну вставку.
Любые идеи?
Я думал о создании цикла, где я добавляю ключи в строку с идентификаторома затем заменить все из них итерацией другого цикла с теми же идентификаторами, но я не считаю, что это очень эффективно или полезно.