• Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;


Иллюстрированный самоучитель по Architecture .NET

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

Каким образом метод SqlDataAdapter::Update (Обновить) передает источнику данных информацию о произведенных изменениях? Изменения, внесенные в объект DataSet (Набор данных), передаются базе данных с помощью свойств 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"));
cmd › Parameters › Add (new SqlParameter(// Параметры › Добавить
"@NumRooms", SqlDbType::Int, 4, "NumberRooms"));
cmd › Parameters › Add(new SqlParameter(// Параметры › Добавить
"@RoomRate", SqlDbType::Money, 8, "RoomRate"));

И, наконец, свойству InsertCommand класса SqlDataAdapter присваивается указатель на экземпляр класса SqlCommand. Отныне именно эта команда будет использоваться при вставке строки в базу данных:

hotelsAdapter › InsertCommand = cmd;

Аналогичный исходный код есть в конструкторе класса HotelBroker (Посредник, бронирующий места в гостинице). Различие лишь в том, что там устанавливаются значения свойств UpdateCommand (Команда обновления) и DeleteCommand для определения команд обновления и удаления строк.

hotelsAdapter › UpdateCommand = new SqlCommand(
"update Hotels set NumberRooms = @NumRooms, RoomRate = @RoomRate
where City = @City and HotelName = @Name",
// где Город = @City и HotelName = @Name ", conn);
hotelsAdapter › UpdateCommand › Parameters › Add(
// Параметры › Добавить new SqlParameter(
"@City", SqlDbType::Char,20, "City"));
hotelsAdapter › UpdateCommand › Parameters › Add(
// Параметры › Добавить new SqlParameter(
"@Name", SqlDbType:-.Char, 20, "HotelName"));
hotelsAdapter › UpdateCommand › Parameters › Add(
// Параметры › Добавить new SqlParameter(
"@NumRooms", SqlDbType::Int, 4, "NumberRooms"));
hotelsAdapter › UpdateCommand › Parameters › Add(
// Параметры › Добавить new SqlParameter(
"@RoomRate",SqlDbType::Money, 8, "RoomRate"));
hotelsAdapter › DeleteCoiranand = new SqlCommand(
"delete from Hotels where City = @City and HotelName =
// "удалить из Гостиниц где Город = @City и HotelName = @Name", conn);
hotelsAdapter › DeleteCommand › Parameters › Add(
// Параметры › Добавить new SqlParameter(
"SCity", SqlDbType::Char, 20, "City"));
hotelsAdapter › DeleteCommand › Parameters › Add(
// Параметры › Добавить new SqlParameter(
"@Name", SqlDbType::Char, 20, "HotelName"));

Все изменения, внесенные в объект DataSet (Набор данных), будут переданы базе данных при выполнении метода SqlDataAdapter::Update (Обновить). Как принять или отменить внесенные изменения до вызова этого метода, будет рассмотрено в следующем разделе.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.