Puede insertar varias filas usando una sola instrucción SQL así:
INSERT INTO myTable (col1, col2, col3) VALUES ('myval1', 'myval2', 'myval3'), ('myotherval1', 'myotherval2', 'myotherval3'), ('anotherval1', 'anotherval2', 'anotherval3');
Actualización:
MarkR tiene razón en su comentario:si está recopilando datos de un usuario o está recopilando información, puede crear la consulta dinámicamente con algo como:
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();
Dos puntos importantes a tener en cuenta:
- Si está aceptando la entrada de un usuario, es muy importante para desinfectar todas las entradas de los usuarios, de lo contrario, los usuarios maliciosos podrían modificar/eliminar/eliminar toda su base de datos. Para obtener más información, busque en Google "Inyecciones de SQL".
- Estoy usando la clase StringBuilder, en lugar de usar una cadena primitiva y simplemente agregar (es decir, string s ="Insertar..."; s+="bla, bla, bla") porque StringBuilder es más rápido para agregar, porque no se trata como una matriz y, por lo tanto, no necesita cambiar su tamaño a medida que lo agrega.