![]() |
![]() |
![]() |
Обновление источника данных Каким образом метод SqlDataAdapter: :Update (Обновить)
передает источнику данных информацию о
произведенных изменениях? Изменения,
внесенные в объект Da-taSet (Набор данных),
передаются базе данных с помощью свойств
InsertCommand, UpdateCommand (Команда обновления) и
DeleteCommand класса SqlDataAdapter. Каждому из этих
свойств присваивается экземпляр SqlCommand,
который может быть параметризован для того,
чтобы поставить в соответствие переменные
программы частям SQL-запроса.
Продемонстрируем это на примере кода,
взятого из реализации конструктора класса
HotelBroker (Посредник, бронирующий места в
гостинице).
SqlCommand *cmd = new SqlCommand(
Параметры должны быть связаны с соответствующими столбцами в DataRow. Во фрагменте кода метода AddHotel, рассмотренного ранее, столбцы различались по именам: HotelName, City (Город), NumberRooms, RoomRate. В конструкторе SqlParame-ter им соответствуют параметры @Name, @City, @NumRooms, @RoomRate. Последний аргумент инициализирует свойство Source (Источник) объекта SqlParameter. Свойство Source (Источник) определяет столбец объекта DataSet (Набор данных), которому соответствует параметр. Метод Add (Добавить) помещает параметр в коллекцию объектов Parameter (Параметр), связанную с экземпляром SqlCommand. SqlParameter *param = new SqlParameter(
И, наконец, свойству InsertCommand класса SqlDataAdapter присваивается указатель на экземпляр класса SqlCommand. Отныне именно эта команда будет использоваться при вставке строки в базу данных: hotelsAdapter->InsertCommand = cmd; Аналогичный исходный код есть в конструкторе класса HotelBroker (Посредник, бронирующий места в гостинице). Различие лишь в том, что там устанавливаются значения свойств UpdateCommand (Команда обновления) и DeleteCommand для определения команд обновления и удаления строк. hotelsAdapter->UpdateCommand = new SqlCommand(
Все изменения, внесенные в объект DataSet (Набор данных), будут переданы базе данных при выполнении метода SqlDataAdapter: : Update (Обновить). Как принять или отменить внесенные изменения до вызова этого метода, будет рассмотрено в следующем разделе. |
![]() |
![]() |
![]() |