Pomocí jednoho příkazu SQL můžete vložit více řádků, například takto:
INSERT INTO myTable (col1, col2, col3) VALUES ('myval1', 'myval2', 'myval3'), ('myotherval1', 'myotherval2', 'myotherval3'), ('anotherval1', 'anotherval2', 'anotherval3');
Aktualizace:
MarkR má ve svém komentáři pravdu - pokud shromažďujete data od uživatele nebo shromažďujete informace, můžete dotaz sestavit dynamicky pomocí něčeho jako:
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();
Dva důležité body:
- Pokud přijímáte vstup od uživatele, je to velmi důležité dezinfikovat všechny uživatelské vstupy, jinak by uživatelé se zlými úmysly mohli upravit/smazat/zahodit celou vaši databázi. Pro více informací vygooglujte „SQL Injections.“
- Používám třídu StringBuilder, místo abych používal primitivum řetězce a jednoduše připojoval (tj. řetězec s ="Vložit..."; s+="bla bla bla"), protože je to StringBuilder, který je rychlejší při přidávání, protože nezachází se s ním jako s polem, a proto se při jeho připojení nemusí měnit jeho velikost.