Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ShPORY_BD.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.64 Mб
Скачать

Тема 8. Сохранение изменений данных в базе данных. Общие сведения о сохранении данных. Обновление записей в базе данных. Вставка новых записей в базу данных.

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

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

Двухэтапные обновления

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

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

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

Процесс двухэтапного обновления и роль DataRowVersion в успехе обновления представлены на рис.

Структурно набор данных делает данные доступными в качестве набора коллекций. Наборы данных содержат коллекции таблиц. Таблицы содержат коллекции строк. Записи доступны в коллекции Rows объектов DataTable. Таким образом, можно вносить изменения в данные набора данных, просто управляя этими коллекциями, используя базовые методы работы с ними. Однако если требуется обновить базовый источник данных, необходимо использовать специальные методы изменения наборов данных.

Слияние наборов данных

Содержимое набора данных можно обновлять с помощью слияния, т. е. при помощи копирования содержимого одного набора данных (называемого исходным набором данных) в вызывающий набор данных (называемый конечным набором данных). При слиянии наборов данных новые записи из исходного набора добавляются в конечный набор. Дополнительные столбцы исходного набора также добавляются в конечный набор.

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

Ограничения на обновление

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

Для предотвращения преждевременных нарушений ограничений можно временно приостановить действие ограничений на обновления. Это служит двум целям.

Предотвращение ошибок, генерируемых при обновлении одного столбца и до перехода к другому.

Предотвращение инициирования некоторых событий обновления (событий, часто используемых для проверки).

Ведение записей об изменениях

Записи об изменениях в наборе данных ведутся двумя методами: маркировкой строки, показывающей, были ли в строку внесены изменения (RowState), а также созданием множества копий записи (DataRowVersion). Используя эти сведения, процессы могут определять, какие изменения были внесены в набор данных, и отправлять соответствующие обновления в источник данных.

Проверка данных

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

Как обновление передается источнику данных

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

Передача параметров. Значения для обновляемых записей в базе данных обычно передаются при помощи параметров. Когда метод Update адаптера таблицы выполняет инструкцию UPDATE, ему необходимо заполнить значения параметра.

Обновление связанных таблиц

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]