UpdatedRowSource

Свойство определяет, каким образом ADO.NET-провайдер должен вносить изменения в объект DataRow (т.е. выполнять синхронизацию с БД) после выполнения метода Update DbDataAdapter.

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

Значение типа System.Data.UpdateRowSource:

Имя члена Описание
None Все изменения игнорируются (значение по умолчанию в случае, когда объект DbCommand создается автоматически (с помощью объекта DbCommandBuilder)).
OutputParameters Измененные выходные параметры отображаются в измененной строке объекта DataSet.
FirstReturnedRecord Данные первой измененной строки отображаются в измененной строке объекта DataSet.
Both Измененные выходные параметры и первая измененная строка отображаются в измененной строке объекта DataSet (значение по умолчанию).

Примечание

Подробное описание значений UpdateRowSource приведено в руководстве Microsoft «Обновление источников данных с помощью объектов DataAdapter».

Исключения

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

Пример
// C#
using System;
using System.Data;
using System.Data.Common;
class UpdatedRowSourceSample
{
  static void Main()
  {
    // Создание фабрики классов провайдера
    DbProviderFactory factory =
      DbProviderFactories.GetFactory("System.Data.LinterClient");
    // Соединение с БД
    DbConnection con = factory.CreateConnection();
    con.ConnectionString = "User ID=SYSTEM;Password=MANAGER8;DataSource=LOCAL";
    try
    {
      con.Open();
      // Создание таблицы БД
      DbCommand cmd = factory.CreateCommand();
      cmd.Connection = con;
      cmd.CommandText = "create if not exists table policy " +
        " (policy_id integer autoinc, policy_name varchar(70))";
      cmd.ExecuteNonQuery();
      // Создание объекта DataTable
      DataTable policy = new DataTable();
      policy.Columns.Add("policy_id", typeof(int));
      policy.Columns.Add("policy_name", typeof(string));
      // Создание объекта DbParameter
      DbParameter par = factory.CreateParameter();
      par.ParameterName = ":policy_name";
      par.SourceColumn = "policy_name";
      par.Direction = ParameterDirection.Input;
      par.DbType = DbType.String;
      par.Size = 70;
      // Создание объекта DbDataAdapter
      DbDataAdapter adapter = factory.CreateDataAdapter();
      adapter.SelectCommand = factory.CreateCommand();
      adapter.SelectCommand.Connection = con;
      adapter.SelectCommand.CommandText = "select * from policy";
      adapter.InsertCommand = factory.CreateCommand();
      adapter.InsertCommand.Connection = con;
      adapter.InsertCommand.CommandText = "insert into policy (policy_name) " +
        " values (:policy_name); select last_autoinc as policy_id";
      adapter.InsertCommand.Parameters.Add(par);
      adapter.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord;
      // Заполнение объекта DataTable данными из таблицы БД
      adapter.Fill(policy);
      // Добавление записи в таблицу DataTable
      DataRow row = policy.NewRow();
      row["policy_name"] = "Политика " + DateTime.Now.ToString();
      policy.Rows.Add(row);
      // Синхронизация объекта DataTable с таблицей БД
      adapter.Update(policy);
      // Отображение полученного объекта DataTable
      OutputDataTable(policy);
    }
    catch (Exception ex)
    {
      Console.WriteLine("Ошибка: " + ex.Message);
    }
    finally
    {
      // Освобождение ресурсов
      con.Close();
    }
  }
  private static void OutputDataTable(DataTable dataTable)
  {
    Console.WriteLine(new String('-', 60));
    foreach (DataColumn column in dataTable.Columns)
    {
      Console.Write(column.ColumnName + " | ");
    }
    Console.WriteLine();
    Console.WriteLine(new String('-', 60));
    foreach (DataRow row in dataTable.Rows)
    {
      for (int i = 0; i <  dataTable.Columns.Count; i++)
      {
        if (row.IsNull(i))
        {
          Console.Write("< NULL > | ");
        }
        else
        {
          Console.Write(row[i] + " | ");
        }
      }
      Console.WriteLine();
    }
  }
}

Результат выполнения примера:

------------------------------------------
policy_id | policy_name                  |
------------------------------------------
1         | Политика 11.07.2012 16:28:57 |