次のサンプルでは、MySQL データベースへの一括挿入を行うクエリを作成します。
const string QUERY = "INSERT INTO contacts (first_name,last_name) VALUES{0};";
public string BuildQuery(IEnumerable<contact> contacts)
{
List<string> values = new List<string>();
foreach (var contact in contacts)
{
values.Add(string.Format("('{0}','{1}')", contact.first_name, contact.last_name));
}
return string.Format(QUERY, string.Join(",", values));
}
結果は次のようになります。
INSERT INTO contacts (first_name,last_name) VALUES("J","Kappers"),("A","Temple")
SQL インジェクションの影響を受けにくい、より安全なクエリを作成するにはどうすればよいですか?