Реклама:

1 Подробнее о связывании столбцов таблицы источника и набора данных см. в 2.2, подраздел "Установка однозначного соответствия между таблицами источника и таблицей данных ".

UPDATE, DELETE SQL-сервера (адаптер SqlDataAdapter) либо реализует аналогичную операцию для адаптеров OLE DB (объект OleDbDataAdapter).

После выполнения метода Update измененная запись помечается как неизменяв-шаяся, т. е. в ее свойство RowState заносится значение Unchanged: Во всех столбцах записи величины исходной версии значения столбца (Original) приравниваются к значению текущей версии значения столбца (Current), Original = Current.

Пример. Исследуем поведение записи данных в процессе внесения в нее изменений. Пусть запись принадлежит таблице данных Kaf из набора dsVUZ1. В элементах управления типа TextBox будем выводить текущее состояние записи и версии значений столбца Код кафедры - исходную и текущую. Изменим код кафедры с 44 на 22 (рис. 6.1).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 6.1

Запомним изменения, внесенные в запись, в таблице Kaf базы данных: sqlDataAdapter1.Update(dsVUZ1, "Kaf");

Рассмотрим состояние записи после запоминания в базе данных (рис. 6.2).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 6.2

6.1.5. Откат (отказ от) изменений

Отказаться от изменений, внесенных в запись (записи) данных, можно методом

RejectChanges

public void RejectChanges();

записи данных (объект типа DataRow), таблицы данных (объект DataTable) или набора данных (объект DataSet).

Примечание. Когда вызывается метод RejectChanges набора данных, происходит отказ от изменений, внесенных во все записи набора. Если вызвать метод RejectChanges таблицы, то будут отменены изменения, внесенные в записи таблицы данных. Метод RejectChanges отдельной записи отменяет изменения, внесенные только в эту запись.

При откате изменений во всех записях, для которых производится этот откат, во всех столбцах исходные версии значений (Original) переписываются в текущие версии значений (Current). Напомним, что версия Original содержит то значение столбца, которое он имел либо сразу после заливки данных в таблицу методом Fill адаптера, либо, если после заливки данные изменялись и перезаписывались в источник данных, сразу после последнего выполнения метода Update адаптера.

Пример. Покажем, как откат изменений приводит запись к ее первоначальному состоянию. Пусть после заливки данными таблица Kaf набора данных ds1 находится в состоянии, показанном на рис. 6.3. В нижней части формы для последней записи таблицы будем показывать текущее состояние записи и версии значения столбца Nazv.

Изменим значение столбца на Алгебры (рис. 6.4), а затем Арифметики (рис. 6.5).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 6.3

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 6.4

рис. 6.5

Затем выполним откат изменений для последней записи таблицы Кат::

сіз1.Каї:[2].Р^ес1:Сгіапдез();

После отката будут восстановлены те значения столбцов записи, какие имели место сразу после заливки таблицы Ка:£ данными из источника данных (рис. 6.6).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис 6.6

Откат изменений широко применяется, когда попытка переноса изменений из приложения в источник данных приводит к ошибке.

Пример. Чтобы обрабатывать ошибки, возникающие при переносе изменений из приложения в источник данных, зададим следующий обработчик события RowUpdated адаптера данных:


⇐ Предыдущая страница| |Следующая страница ⇒