Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по C#_Часть1.doc
Скачиваний:
92
Добавлен:
19.08.2019
Размер:
2.54 Mб
Скачать
      1. Сохранение данных в источнике данных

Обновление данных в источнике данных осуществляется в два этапа.

Первый этап «Фиксация данных в наборе данных»– это обновление набора данных, т.е. добавление новых сведений: новых записей, измененных записей или удаленных записей. Если приложение отвечает только за обработку набора данных, (например после обновления набора данных он отправляется в другое приложение, которое выполняет дальнейшую обработку набора данных), тогда обновление заканчивается. При выполнении второго этапа, первый выполняется автоматически.

Второй этап «Обновление данных в источнике данных» – отправление изменений, внесенных в набор данных в исходный источник данных. Этот этап автоматически не выполняется, его необходимо выполнять в явном виде.

Фиксация данных в наблоре данных:

При внесении изменений в записи набора данных с помощью обновления, вставки и удаления записей набор данных сохраняет исходную и текущую версии записей. Кроме того, свойство RowState каждой строки следит за тем, находится ли запись в исходном состоянии или была обновлены, вставлена или удалена. Эти сведения можно использовать, когда требуется найти определенную версию строки.

После обработки всех измененных строк можно внести изменения посредством вызова метода AcceptChanges, принадлежащего DataSet, DataTable или DataRow. Метод AcceptChanges вызывается автоматически при вызове методов обновления TableAdapter или адаптера данных. Метод AcceptChanges вызывается после подтверждения изменений в базе данных.

При вызове метода AcceptChanges для класса DataSet завершается изменение любых объектов DataRow, находящихся в режиме изменения. Свойство RowState каждого DataRow также изменяется; строки Added и Modified становятся Unchanged, и строки Deleted удаляются.

Чтобы внести изменения в набор данных вызовите метод AcceptChanges в DataSet, DataTable или DataRow:

БД.Таблица.AcceptChanges();

Сохранение данных в источнике данных

Сохранение данных – процесс переноса изменений данных в приложении обратно к исходному хранилищу данных, обычно реляционной базе данных, например SQL Server.

Так как набор данных является кэшем данных, то есть их копией в памяти, процесс записи сведений в исходный источник данных отделен от процесса изменения данных в наборе данных. Можно отправить обновленные данные из наборов данных обратно к базе данных путем вызова одного из методов Update TableAdapter.

Visual Studio содержит компонент TableAdapterManager, который помогает при выполнении сохранения данных в связанных таблицах. Этот компонент обеспечивает выполнение сохранения в требуемом порядке, основанном на ограничениях внешних ключей, определенных в базе данных.

Чтобы внести изменения в набор данных вызовите метод

tableAdapterManager1.UpdateAll(БД);

или

tableAdapter.Updatel(БД);

Например,

personTableAdapter.Update(sotrudnicDataSet1);

tableAdapterManager.UpdateAll(sotrudnicDataSet1);

Чтобы отобразить изменения в таблице DataGridView вызовите метод для компонента TableAdapter, к которому привязан DataGridView:

tableAdapter.Fill(БД.Таблица);

Например,

allTableAdapter.Fill(sotrudnicDataSet1.All);

Запуск и остановка действия ограничений на обновление

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

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

Для запуска и остановки действия ограничений следует вызвать методы:

tableBindingSource.BeginEdit() и tableBindingSource.EndEdit()

Примечание В Windows Forms архитектура привязки данных, встроенная в таблицу, приостанавливает проверку ограничения до того, как процесс не перейдет к другой строке, поэтому нет необходимости в явном виде вызывать методы BeginEdit и EndEdit.

В целом фиксаюия изменений в источнике данных и обновление на форме можно произвести с помощью кода

Validate();

tableBindingSource.EndEdit();

tableAdapterManager1.UpdateAll(this.БД);

tableAdapter.Fill(БД.Таблица);