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 |