Puoi inserire più righe utilizzando una singola istruzione SQL in questo modo:
INSERT INTO myTable (col1, col2, col3) VALUES ('myval1', 'myval2', 'myval3'), ('myotherval1', 'myotherval2', 'myotherval3'), ('anotherval1', 'anotherval2', 'anotherval3');
Aggiornamento:
MarkR ha ragione nel suo commento:se stai raccogliendo dati da un utente o stai compilando informazioni, puoi creare la query in modo dinamico con qualcosa come:
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();
Due punti importanti da notare:
- Se accetti l'input di un utente, è molto importante per disinfettare tutti gli input degli utenti, altrimenti gli utenti malintenzionati potrebbero modificare/eliminare/eliminare l'intero database. Per ulteriori informazioni, cerca su Google "Iniezioni SQL".
- Sto usando la classe StringBuilder, piuttosto che usare una primitiva di stringa e semplicemente aggiungere (es. string s ="Insert..."; s+="blah blah blah") perché StringBuilder è più veloce nell'aggiungere, perché non viene trattato come un array, quindi non ha bisogno di ridimensionarsi quando lo aggiungi.