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 |