Vous pouvez insérer plusieurs lignes à l'aide d'une seule instruction SQL comme suit :
INSERT INTO myTable (col1, col2, col3) VALUES ('myval1', 'myval2', 'myval3'), ('myotherval1', 'myotherval2', 'myotherval3'), ('anotherval1', 'anotherval2', 'anotherval3');
Mise à jour :
MarkR a raison dans son commentaire - si vous collectez des données auprès d'un utilisateur ou si vous compilez des informations, vous pouvez créer la requête dynamiquement avec quelque chose comme :
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();
Deux points importants à noter :
- Si vous acceptez les commentaires d'un utilisateur, c'est très important pour nettoyer toutes les entrées utilisateur, sinon des utilisateurs malveillants pourraient modifier/supprimer/supprimer l'intégralité de votre base de données. Pour plus d'informations, recherchez "Injections SQL".
- J'utilise la classe StringBuilder, plutôt que d'utiliser une primitive de chaîne et d'ajouter simplement (c'est-à-dire. string s ="Insert..."; s+="blah blah blah") car c'est StringBuilder qui est plus rapide à ajouter, car il n'est pas traité comme un tableau et n'a donc pas besoin de se redimensionner lorsque vous y ajoutez.