Быстрое обновление записей

  • Автор темы NikSoft
  • Дата начала
N

NikSoft

#1
Пусть мы изменили fieldfCorrected поле порядка 200 000 записей в DataSet обьекте и нам надо сохранить эти записи в базе данных. Следующий код решает задачу.

Код:
public void UpdateManpartnoFields(DataSet ds, string dataTableName)
{
Connection.Open();

SqlDataAdapter dataAdpater = new SqlDataAdapter();
dataAdpater.SelectCommand = new SqlCommand("SELECT PrimaryKey, fieldCorrected FROM " + dataTableName, Connection);
SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(dataAdpater);
dataAdpater.UpdateBatchSize = 0;

try
{
dataAdpater.Update(ds, dataTableName);
}
catch (SqlException ex)
{
Debug.WriteLine("An exception was encountered " + ex.Message + ex.StackTrace + ex.GetType());
}
catch (Exception e)
{
}
Debug.WriteLine("An exception was encountered " + e.Message + e.StackTrace + e.GetType());
}
finally
{
Connection.Close();
}
}
Здесь применяется обновление записей в пакетном режиме с помощью установки в ноль свойства UpdateBatchSize адаптера. Если бы свойству UpdateBatchSize было присвоено значение n ( n > 0 ) , то только n первых обновлений производилось бы в пакетном режиме.