Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Передача параметров

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

При использовании инструментов Visual Studio для создания адаптера данных объект UpdateCommand будет содержать коллекцию параметров, соответствующих каждому шаблону параметра в инструкции.

Свойство SqlParameter.SourceColumnкаждого параметра указывает на столбец в таблице данных. Например, свойство SourceColumn для параметров au_id и Original_au_id устанавливается на любой столбец в таблице данных, который содержит идентификатор автора. Когда работает методUpdateадаптера таблицы, он считывает идентификатор автора из обновляемой записи и заполняет значения параметров в инструкции.

В инструкции UPDATE необходимо задать и новые значения (которые будут вписаны в запись), и старые значения (для того чтобы обновляемую запись можно было найти в базе данных). Поэтому для каждого значения имеется два параметра: один для предложения SET, а другой для предложения WHERE. Оба параметра читают данные из обновляемой записи, но получают разные версии значений столбца, основанные на свойстве параметра SqlParameter.SourceVersion. Параметр предложения SET получает текущую версию, а параметр предложения WHERE получает исходную версию.

Примечание. Можно задать значения в коллекции Parameters самостоятельно в коде, который обычно работает в обработчике событий события RowChanging адаптера данных.

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

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

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

Существует следующее общее правило отсылки обновлений в таблицы.

  1. Дочерняя таблица: удаление записей.

  2. Родительская таблица: вставка, обновление и удаление записей.

  3. Дочерняя таблица: вставка и обновление записей.

Сохранение данных с помощью методов dbDirect адаптера таблицы

Для более четкого управления процессом обновления следует вызвать один из методов DBDirectадаптера таблиц, с помощью которого можно передать отдельные значения для каждой строки данных. Дополнительные сведения см. в разделе Лабораторная работа №7. Сохранение данных с помощью методов DBDirect адаптера таблицы.