Architecture Net



         

Обновление источника данных


Каким образом метод SqlDataAdapter: :Update (Обновить) передает источнику данных информацию о произведенных изменениях? Изменения, внесенные в объект Da-taSet (Набор данных), передаются базе данных с помощью свойств InsertCommand, UpdateCommand (Команда обновления) и DeleteCommand класса SqlDataAdapter. Каждому из этих свойств присваивается экземпляр SqlCommand, который может быть параметризован для того, чтобы поставить в соответствие переменные программы частям SQL-запроса. Продемонстрируем это на примере кода, взятого из реализации конструктора класса HotelBroker (Посредник, бронирующий места в гостинице).
Экземпляр SqlCommand создается для представления параметризованного SQL-запроса, который используется при вызове метода SqlDataAdapter:: Update (Обновить) для добавления в базу данных новой строки. В момент вызова метода вместо параметров будут подставлены фактические значения.

SqlCommand *cmd = new SqlCommand(
"insert Hotels(City, HotelName, NumberRooms, RoomRate)
// "вставить Гостиницы (Город, HotelName,
// NumberRooms, RoomRate)
values(@City, @Name, SNumRooms, @RoomRate)", // значения
conn);

Параметры должны быть связаны с соответствующими столбцами в DataRow. Во фрагменте кода метода AddHotel, рассмотренного ранее, столбцы различались по именам: HotelName, City (Город), NumberRooms, RoomRate. В конструкторе SqlParame-ter им соответствуют параметры @Name, @City, @NumRooms, @RoomRate. Последний аргумент инициализирует свойство Source (Источник) объекта SqlParameter. Свойство Source (Источник) определяет столбец объекта DataSet (Набор данных), которому соответствует параметр. Метод Add (Добавить) помещает параметр в коллекцию объектов Parameter (Параметр), связанную с экземпляром SqlCommand.

SqlParameter *param = new SqlParameter(
"@City", SqlDbType::Char, 20, "City");
cmd->Parameters->Add(param); // Параметры-> Добавить
cmd->Parameters->Add(new SqlParameter( // Параметры-> Добавить
"@Name", SqlDbType::Char, 20, "HotelName"));




Содержание  Назад  Вперед