Вы можете вставить несколько строк, используя один оператор 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();
Два важных момента, на которые следует обратить внимание:
- Если вы принимаете входные данные от пользователя, очень важно очистить все пользовательские данные, в противном случае злонамеренные пользователи могут изменить / удалить / удалить всю вашу базу данных. Для получения дополнительной информации, Google "SQL-инъекции".
- Я использую класс StringBuilder, а не строковый примитив и просто добавляю (т.е. string s = "Insert ..."; s + = "бла-бла-бла"), потому что это StringBuilder быстрее при добавлении, потому что он не обрабатывается как массив и поэтому не требует изменения размера при добавлении к нему.