Я использую MySqlParameter
в моем коде C#.Несколько Вставить в одном запросе с MySqlParameters
С одной записи для вставки, код выглядит следующим образом:
string query = "INSERT IGNORE INTO giveaways(giveaway_id, status) VALUES(@giveawayID, @status)";
MySqlParameter[] parameters = {
new MySqlParameter("@giveawayID", giveawayID),
new MySqlParameter("@status", (byte) status)
};
await ExecuteNonQueryRetryAsync(query, parameters).ConfigureAwait(false);
Однако, я не знаю, как достичь подобную вещь, если я хочу, чтобы вставить несколько записей в одном SQL запросе, при этом используя MySqlParameter
.
На данный момент, я написал что-то вроде этого:
StringBuilder query = new StringBuilder("INSERT IGNORE INTO winners(giveaway_id, winner_id) VALUES");
foreach (ulong winner in winners) {
query.Append("('" + giveawayID + "'," + winner + "),");
}
query.Length -= 1; // Remove last char ',' from values
await ExecuteNonQueryRetryAsync(query.ToString()).ConfigureAwait(false);
Он работает, но он не использует MySqlParameter
вообще. Есть ли лучший способ достичь этого? Я имею в виду, мне приходится обращаться с цитированием литералов и других вещей, подобных мне, когда мне не нужно об этом беспокоиться при использовании MySqlParameter
, что также является лучшим способом ИМХО.
Итак, действительно вопрос ... Есть ли способ загрузить параметр MySQL с помощью массива или любой другой хороший способ передать несколько значений для вставки?
Заранее спасибо.
(Tagged кодирование-стиль, потому что я на самом деле пытается написать что-то лучше, чем то, что написано уже)
для цитируемых литералов вы не можете использовать строку. Функция Format в вашем запросе. Функция приложения ..? – MethodMan
Да, эта часть, вероятно, может быть написана лучше, и я, скорее всего, ее перепишу, но я подумал, есть ли способ использовать MySqlParameter вместо того, чтобы делать все это вручную. – JustArchi
Что вы имеете в виду вместо того, чтобы делать это вручную ..? также, когда я вставляю много данных в Sql Server без использования 'Bulk Inserts', потому что наш« DBA »отключил эту функцию на Sql Server, я создаю себе временную таблицу, затем каждый раз передаю все свои данные из данных, преобразованных в XML и делать объемные вставки таким образом .. намного проще .. или вы можете создать определенный пользователем тип на db и сделать это так же. – MethodMan