2009-10-27 3 views
0

Каков наилучший способ сэкономить тысячи строк и после чего что-то сделать, обновив их.Проблема с обновлением DataTable

В настоящее время я использую DataTable, заполняя его, когда делается вставка с помощью

MyDataAdapter.Update(MyDataTable) 

После выполнения некоторых изменений на MyDataTable, я снова использовать метод MyDataAdapter.Update (MyDataTable).

Edit:

Я извиняюсь за не предоставление дополнительной информации.

Может быть до 200 000 строк, которые будут созданы из файла XML. Там строки будут сохранены в базе данных. После этого будет какой-то процесс для каждой строки. И мне нужно будет обновить каждую строку в базе данных.

Вместо обновления строки за строкой я решил обновить данные и использовать один и тот же файл данных для обновления строк.

Это лучшее из меня.

Я думаю, что может быть разумный подход.

+0

Нет ничего плохого в этом, у вас есть конкретная проблема? –

ответ

1

В Реагируя на ваши комментарии:

будет Udate (Вставить/Удалить) по строкам DataAdapter.Update(). Если у вас есть индивидуальные изменения, на самом деле не существует более быстрого способа. Если у вас есть систематические изменения, например SET Price = Price+ 2 WHERE SelByDate < '1/1/2010', вам будет лучше, запустив DbCommand против базы данных.

Но, возможно, вам следует беспокоиться о транзакциях и обработке ошибок до производительности.

+0

@ Хенк Холтерман: Но я использую свойство DataAdapter.UpdateBatchSize, которое увеличивает perfonce. – JCasso

+0

ОК, установив, что> 1 обновит пакет строк, меньше накладных расходов. Я не думаю, что это меняет суть моего ответа. –

+0

@ Хенк Холтерман, на самом деле у меня нет массового обновления. Я отправляю несколько столбцов каждой строки в веб-службу, и сервер отправляет мне уникальное значение для каждого запроса, а затем я обновляю. В любом случае кажется, что лучшего способа сделать это не будет. – JCasso

1

Если я правильно понимаю, вы выполняете две отдельные операции: загружая строки в базу данных, а затем обновляя эти строки.

Если строки, которые вы вставляете, поступают из другого поддерживаемого ADO.NET источника данных, тогда вы можете использовать SqlBulkCopy для вставки строк в партии, что будет более эффективно, чем использование данных datatable.

Как только строки находятся в базе данных, я бы предположил, что вам лучше выполнить SQLCommand для изменения их значений.

Если вы можете предоставить более подробную информацию о том, что - и почему - вы задаете вопрос, то, возможно, мы сможем лучше подобрать для него ответ.

+0

На самом деле проблема заключается в их обновлении. Я сохраняю это нормально. Но я не хочу обновлять их один за другим. Все вставленные строки должны быть обновлены. И мне действительно нужно их сохранить, прежде чем обновлять их. – JCasso