2015-04-17 3 views
2

У меня есть приложение для оконных форм для автоматизации определенных задач, а одна часть - заполнение таблицы SQL Server большими объемами информации (иногда меньше 10, но я вижу ситуация с более чем 1000 строк!)Список (из T) vs DataTable для заполнения базы данных

Сегодня у меня есть Список (из Т) для выполнения этой задачи. «T» - это класс с 8 параметрами строк.

В функции «Сохранить» я разбираю список, чтобы построить SQL-запрос, чтобы вставить информацию в одну таблицу.

Но процесс вставки в БД иногда занимает несколько секунд, даже если вставить несколько строк, особенно при перегрузке SQL-сервера. Лучше использовать DataTable с 8 строковыми столбцами для хранения данных и использования для заполнения базы данных? Я также ценю другие предложения.

наилучшими пожеланиями

+0

Вставка более 1000 записей может длиться несколько секунд. Это слишком долго? Вы можете использовать «DataTable» и установить параметр [UpdateBatchSize] dataadapter (https://msdn.microsoft.com/en-us/library/system.data.common.dbdataadapter.updatebatchsize%28v=vs.110%29 .aspx) до 1000. Это должно быть более эффективным. Но 'SQLBulkCopy' - наиболее эффективный подход. –

ответ

3

На стороне VB структура используется не будет делать разницы. Если вам нужен более быстрый метод, вы можете посмотреть на SQLBulkCopyClass, чтобы помочь вам.

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy%28v=vs.110%29.aspx

+0

Очень интересно это SQLBulkCopyClass. Решите эту проблему, потому что принимайте DataTable напрямую и, похоже, применитесь к другому проекту, который работает, где есть несколько классов импорта «excel to SQL». Единственной проблемой является определенная внешняя клиентская БД, доступная только через WebService или VPN, и ей необходимо передать обычную вставку SQL. –

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