2015-05-12 5 views
3

Мне нужно вставить несколько строк в одно и то же время (1000 строк) в базу данных SQL Server. Я думаю, что лучший способ - использовать SqlBulkCopy, но я не уверен, как параметризовать запросы вставки, чтобы быть в безопасности от SQL-инъекции.SqlBulkCopy и защита от SQL-инъекции

Не могли бы вы помочь мне? Каков наилучший способ выполнения нескольких операторов вставки (безопасный SQL-инъекция)?

спасибо.

+0

SqlBulkCopy - это управление передачей класса .net с одного источника данных на другой. Массовая вставка - это особенность SQL Server. Также нет проблем с инъекциями, и оба являются хорошими способами вставить много строк. Это не то место, где можно попросить учебники, показать, что вы пробовали, и проблемы, которые у вас есть. –

+0

Благодарим вас за ответ. Мне не нужен учебник. У меня много строк (пользовательские входы). Например. У меня 1000 рядов. Мне нужно использовать лучший способ вставить все определенные пользователем строки в базу данных MS SQL Server. Я могу определить SqlCommand и sql-параметры для каждой строки, но он медленный. Я просто не знаю, использует ли SqlBulkCopy SqlParameter внутренне, или мне нужно использовать собственную защиту от SQL-инъекций. Большое спасибо. – user2980426

+0

S/O нахмурился на вопросы, касающиеся вопросов, например, что это лучший способ ... Как уже было сказано, вы в значительной степени спрашиваете, как избежать атак с SQL-инъекциями. Методы массовой вставки являются безопасными для инъекций, поскольку они не зависят от генерации sql. Вы можете увидеть предыдущие аналогичные ответы. http://stackoverflow.com/questions/2624713/how-do-i-insert-multiple-rows-without-repeating-the-insert-into-dbo-blah-part или найти другие учебники и показать, что вы пробовали и проблемы, которые у вас есть. –

ответ

0

Я использовал это решение на нескольких случаи жизни, чтобы сделать несколько вставок: http://www.sqlteam.com/article/sql-server-2008-table-valued-parameters

Имейте в виду, что существует проблема с безопасностью SQL сервера для таблицы значных типов. Вы должны использовать шаткий синтаксис для их установки:

grant execute on TYPE::dbo.tableType to role_or_user 
1

Лучший способ для вставки нескольких строк с помощью SqlBulkCopy.

Класс SqlBulkCopy уже безопасен от SQL Injection. Поэтому вам не нужно беспокоиться об этом.

Смежные вопросы