次のように、単一のSQLステートメントを使用して複数の行を挿入できます。
INSERT INTO myTable (col1, col2, col3) VALUES ('myval1', 'myval2', 'myval3'), ('myotherval1', 'myotherval2', 'myotherval3'), ('anotherval1', 'anotherval2', 'anotherval3');
更新:
MarkRは彼のコメントにぴったりです。ユーザーからデータを収集している場合、または情報をコンパイルしている場合は、次のように動的にクエリを作成できます。
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("INSERT INTO myTable (col1, col2, col3) VALUES ");
for(int i=0;i<myDataCollection.Count;i++) {
stringBuilder.Append("(" + myDataCollection[i].Col1 + ", " + myDataCollection[i].Col2 + ", " + myDataCollection[i].Col3 + ")");
if (i<myDataCollection.Count-1) {
stringBuilder.Append(", ");
} else {
stringBuilder.Append(";");
}
}
string insertStatement = stringBuilder.ToString();
注意すべき2つの重要なポイント:
- ユーザーからの入力を受け入れる場合、それは非常に重要です すべてのユーザー入力をサニタイズします。そうしないと、悪意のあるユーザーがデータベース全体を変更/削除/削除する可能性があります。詳細については、Googleの「SQLインジェクション」をご覧ください。
- 文字列プリミティブを使用して単純に追加するのではなく、StringBuilderクラスを使用しています(つまり、string s ="Insert ..."; s + ="blah blah blah")。配列として扱われないため、追加するときにサイズを変更する必要はありません。