使用 MySqlParameters 在一个查询中插入多个
Multiple Insert in one query with MySqlParameters
我在我的 C# 代码中使用 MySqlParameter
。
要插入一条记录,代码如下所示:
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 参数,或者有什么其他好的方法可以将多个值传递给插入?
提前致谢。
(标记为编码风格,因为实际上我正在尝试编写比已经编写的更好的东西)
由于想不出更好的东西,我最终有了最初的想法,我只是用 MySQL 参数替换了 giveawayID
,因为我可以做那件事。
StringBuilder query = new StringBuilder("INSERT IGNORE INTO winners(giveaway_id, winner_id) VALUES");
foreach (ulong winnerID in winners) {
query.Append("(@giveawayID, " + winnerID + "),");
}
query.Length -= 1; // Remove last char ',' from values
MySqlParameter[] parameters = {
new MySqlParameter("@giveawayID", giveawayID)
};
await ExecuteNonQueryRetryAsync(query.ToString(), parameters).ConfigureAwait(false);
如果有人找到更好的方法,请不要犹豫post它,我真的希望有更好的方法。
我在我的 C# 代码中使用 MySqlParameter
。
要插入一条记录,代码如下所示:
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 参数,或者有什么其他好的方法可以将多个值传递给插入?
提前致谢。
(标记为编码风格,因为实际上我正在尝试编写比已经编写的更好的东西)
由于想不出更好的东西,我最终有了最初的想法,我只是用 MySQL 参数替换了 giveawayID
,因为我可以做那件事。
StringBuilder query = new StringBuilder("INSERT IGNORE INTO winners(giveaway_id, winner_id) VALUES");
foreach (ulong winnerID in winners) {
query.Append("(@giveawayID, " + winnerID + "),");
}
query.Length -= 1; // Remove last char ',' from values
MySqlParameter[] parameters = {
new MySqlParameter("@giveawayID", giveawayID)
};
await ExecuteNonQueryRetryAsync(query.ToString(), parameters).ConfigureAwait(false);
如果有人找到更好的方法,请不要犹豫post它,我真的希望有更好的方法。