ContinueUpdateOnError

Свойство предоставляет или устанавливает признак необходимости генерировать исключение при обнаружении ошибки во время обновления строки.

Если для свойства ContinueUpdateOnError установлено значение true, то при обнаружении ошибки во время обновления строки исключение не выдается. Обновление строки пропускается, и информация об ошибке помещается в свойство RowError строки с ошибкой. Объект DataAdapter продолжает обновление последующих строк.

Если для свойства ContinueUpdateOnError установлено значение false, то при обнаружении ошибки во время обновления строки исключение выдается.

Значением по умолчанию является false.

Декларация
public bool ContinueUpdateOnError {get; set;};
Значение свойства

Значение true для продолжения обновления данных без генерации исключения; в противном случае – значение false.

Исключения

Отсутствуют.

Пример
// C#
using System;
using System.Data;
using System.Data.Common;

class ContinueUpdateOnErrorSample
{
  static void Main()
  {
    // Создание фабрики классов провайдера
    DbProviderFactory factory =
      DbProviderFactories.GetFactory("System.Data.LinterClient");
    // Соединение с БД
    DbConnection con = factory.CreateConnection();
    con.ConnectionString =
      "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8";
    con.Open();
    // Создание таблицы БД
    DbCommand cmd = factory.CreateCommand();
    cmd.Connection = con;
    cmd.CommandText =
      "create or replace table users ( " +
      "id integer primary key, name varchar(70));" +
      "insert into users (id, name) values (0, 'Пользователь A');" +
      "insert into users (id, name) values (1, 'Пользователь B');";
    cmd.ExecuteNonQuery();
    // Создание объекта DbDataAdapter
    DbDataAdapter adapter = factory.CreateDataAdapter();
    adapter.SelectCommand = factory.CreateCommand();
    adapter.SelectCommand.Connection = con;
    adapter.SelectCommand.CommandText =
      "select id, name from users";
    adapter.ContinueUpdateOnError = true;
    // Создание объекта DbCommandBuilder
    DbCommandBuilder builder = factory.CreateCommandBuilder();
    builder.DataAdapter = adapter;
    // Заполнение объекта DataTable данными из таблицы БД
    DataTable users = new DataTable();
    adapter.Fill(users);
    // Изменяем записи в таблице DataTable
    users.Rows[0]["name"] = "Новый пользователь A";
    users.Rows[1]["name"] = "Новый пользователь B";
    // Имитируем несогласованное изменение первой записи в БД
    cmd.CommandText =
      "update users set name = 'Новый пользователь X' where id = 0";
    cmd.ExecuteNonQuery();
    // Теперь обновление БД должно завершиться ошибкой
    adapter.Update(users);
    // Отображение таблицы после обновления
    Console.WriteLine("Строки таблицы после обновления:");
    foreach (DataRow row in users.Rows)
    {
      Console.Write("{0}: '{1}' ", row[0], row[1]);
      if (row.HasErrors)
      {
        Console.WriteLine("(при обновлении строки произошла ошибка)");
      }
      else
      {
        Console.WriteLine("(обновление строки выполнено успешно)");
      }
    }
    // Освобождение ресурсов
    con.Close();
  }
}