Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Новости ИТ Программы Книги Games   Обои   Экспорт RSS E-Books
 
Поиск по сайту

TOP-10 программ
Symantec Norton Ghost 9.0
Partition Magic 8.0.2 Pro
Xilisoft 3GP Video Converter v3.1.7.0616b
Norton AntiVirus 2005
Xilisoft 3GP Video Converter v2.1.52.831b
Антивирус Касперского Personal 5.0.303 beta 2
RAR Password Cracker 4.12
ABBYY PDF Transformer v1.00.820
MP3 To Ringtone Gold v3.02
Mobtime Cell Phone Manager v5.3.1
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 
 

  Раздел: Компьютерная документация -> Программирование -> C++ Builder

 

Получение уведомлений MS SQL сервера в С++ Builder

В клиент-серверных задачах порою требуется получить по некоемому событию на SQL сервере уведомление на клиенте, при этом не опрашивая о случившихся изменениях. Реализовать данную функциональность возможно с использованием расширенной хранимой процедуры (extended stored procedure), представляющей из себя динамически подключаемую библиотеку, которая через сокеты по протоколу UDP будет рассылать бродкаст (broadcast) пакеты по сети. Создание расширенной хранимой процедуры производилось мною в среде С++ Builder 6 c использованием ODS (Open Data Service) API для СУБД MS SQL Server 2000. Необходимо обратить внимание, что по умолчанию в поставку данной среды разработки от Borland входит статическая библиотека Opends60.lib, реализующая весь сервис предоставляемой ODS API, но данная библиотека имеет устаревшую версию и поддерживает только MS SQL 7. Взять файл импорта библиотеки можно отсюда или сформировать его самостоятельно с использованием утилиты Implib. Также следует отметить, что протокол UDP не гарантирует доставку сообщения, но и не требует установления соединения, как скажем TCP, что является решающим при выборе способа доставки.

Простейшим примером использования механизма уведомления, является генерация события отсылки оповещения из триггера таблицы аудита пользователей при добавлении новой записи. Таблица, именуемая EVENTS, имеет структуру, состоящую из уникального идентификатора записи, логина пользователя и информационного сообщения, о котором надо уведомить всех заинтересованных подписчиков. Расширенная процедура "xp_event" может иметь следующие входные параметры: <имя хоста>, <номер порта>, <текст сообщения>, <имя пользователя>, <идентификатор записи>. В качестве имени хоста можно задать широковещательный адрес. К примеру, 223.1.2.255 (net-directed broadcast – вещание в пределах сети 223.1.2.XXX), 255.255.255.255 (limited broadcast address), когда хост может не знать собственной маски подсети и своего IP адреса, а можно и просто сетевое имя машины локальной сети. Обратите внимание, что если ваша сеть разделена на подсети, то маршрутизатор не пропустит широковещательные пакеты без дополнительной настройки. Номер порта UDP произволен, но следует избегать при настройке системных портов используемых операционной системой. По умолчанию на клиенте для прослушивания используется порт 3338.

Компонент TSQLAlerter имеет два метода: Start и Stop, которые соответственно создают новый процесс для прослушивания порта и останавливают его, т.е. клиент выступает в роли UDP сервера. Событие OnGetMessage наступает в момент получения оповещения, а указатель на визуальный компонент TLabel позволяет визуализировать полученное сообщение на форме. Структура, используемая для пересылки данных имеет следующий вид:

typedef struct TDATASEND      // Структура для пересылки
{
char message[1024];
char login[1024];
long id;
} TDATASEND;

Поток получает уведомление и в методе AddMessage() синхронизирует свойства Message, RecordId и Login обьекта класса TSQLAlerter. Свойство Language отвечает за язык, используемый при визуализации основных сообщений об ошибках в работе компонента. Пример регистрации процедуры и реализации отсылки уведомления можно посмотреть в скрипте TSQLAlerter.sql.

Автор: Станислав Васильев
Источник: www.messageapi.narod.ru

Ссылки по теме
BuilderX - новая среда разработки от Borland
Создание Web-приложений с помощью C++Builder 5
Использование COM-технологии в C++ Builder
FAQ конференции RU.CBUILDER по C++ Builder
FAQ по C++ Builder

Вся документация по C++ Builder

 

Компьютерная документация от А до Я - Главная

 
Популярные книги

Системное администрирование на 100 % (+CD)

Подробнее

Дизайн помещений и интерьеров в 3ds max 7 (+CD)

Подробнее

Самоучитель Macromedia Flash 5

Подробнее

 

 
Новости ИТ
01.12.2008  Buffalo выпустил миниатюрные USB-накопители
01.12.2008  VENTO TA-U1 - стильный корпус представлен Asus
01.12.2008  Fujitsu-Siemens выпускает в продажу внешний ускоритель для ноутбуков
01.12.2008  Оригинальные чехлы для ноутбуков от Choiix
01.12.2008  Опубликован код драйвера для беспроводных карт Atheros
01.12.2008  Лучший блог 2008
01.12.2008  Linux запустили на Apple iPhone
01.12.2008  LG KC780
01.12.2008  MSI дополнит линейку Wind-нетбуков двумя моделями
01.12.2008  Nikon D3X - 24,5 млн пикселей для профессионалов
01.12.2008  Киловаттник HIPER M1000 с КПД выше 85%
01.12.2008  AMD впервые снизила цены линейки Radeon HD 4800
01.12.2008  Чистильщики: Wise Registry Cleaner v.3.8.2
01.12.2008  Антивирусы: RemoveIT Pro v4 SE (30.11.2008)
01.12.2008  Корпус ASUS Vento TA-U1 можно поставить вместо новогодней ёлки
01.12.2008  Диагностика: PC Wizard 2008 v.1.871
01.12.2008  Диагностика: NextSensor v.2.7.6.0 Build 1130
01.12.2008  Тестовые приложения: PassMark BurnInTest v.6.0 Build 1000 Beta 15
01.12.2008  Неофициальные драйверы для модемов Motorola
01.12.2008  Драйверы и утилиты для сетевых хранилищ D-Link
 
Полезно

 
Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100