Russian Qt Forum
Ноябрь 05, 2024, 21:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: 4.3.2: подписка на сигналы о событиях от субд?  (Прочитано 18434 раз)
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #15 : Май 10, 2008, 21:17 »

Поток - QThread
Ожидание - смотри доки FB/IB по работе с api событий.
вот это, как в Qt'ях неQt'явое событие ловить?
Записан

Юра.
Tonal
Гость
« Ответ #16 : Май 11, 2008, 12:26 »

У меня в python-е схемотично так:
Код:
      self.__conduit = conn.event_conduit(self.__events)
      evs = self.__conduit.wait(time)
      if evs:
        self.__send_msg(evs)
Как будет на С++ - надо смотреть либо client api, либо библиотеку-обёртку, которую будешь использовать.
Записан
White Owl
Гость
« Ответ #17 : Май 12, 2008, 18:05 »

Да, вроде Троли обещали события базы поддержать для PG/FB/IB - смотри, может в 4.4 уже всё есть. Улыбающийся
А можно ссылку на это обещание? Или это было где-то в ньюсах? Про ODBC они ничего подобного не обещали?
Записан
ритт
Гость
« Ответ #18 : Май 12, 2008, 19:05 »

Да, вроде Троли обещали события базы поддержать для PG/FB/IB - смотри, может в 4.4 уже всё есть. Улыбающийся
А можно ссылку на это обещание? Или это было где-то в ньюсах? Про ODBC они ничего подобного не обещали?

ссылки в начале треда
Записан
Tonal
Гость
« Ответ #19 : Май 12, 2008, 20:08 »

А разве ODBC умеет рассылать события из баз?
Записан
White Owl
Гость
« Ответ #20 : Май 12, 2008, 20:51 »

А разве ODBC умеет рассылать события из баз?
Сам по себе нет. Но например для драйвера ASA можно сделать так:
Код:
// колбек-обработчик сообщений
void SQL_CALLBACK my_msgproc(
   VOID * sqlca,
   UNSIGNED CHAR msg_type,
   LONG code,
   UNSIGNED SHORT len,
   CHAR* msg )
{ ... }

// и после установления коннекта:
rc = SQLSetConnectAttr(
   dbc,
   SA_REGISTER_MESSAGE_CALLBACK,
   (SQLPOINTER) &my_msgproc, SQL_IS_POINTER );
Естественно константа SA_REGISTER_MESSAGE_CALLBACK определена в собственном заголовке.
Записан
Tonal
Гость
« Ответ #21 : Май 13, 2008, 07:07 »

И как это должно выглядеть в QODBC?
Подключать всегда заголовки ASA? Улыбающийся

Для таких штук нужно из драйвера добывать хендел подключения и работать с ним напрямую.
Записан
White Owl
Гость
« Ответ #22 : Май 13, 2008, 17:58 »

Ну да, я так и делаю пока: получаю хендл коннекта через db.driver()->handle(), и самостоятельно зову SQLSetConnectAttr(). Для этого конечно еще и дополнительно линкуюсь с odbc32.dll. Работает.
Но хотелось бы более гладкого кода а раз уж в 4.4 обещан QSqlDriver::subscribeToNotification()... то... Хотя да, для универсального драйвера интерфейса типа ODBC это действительно вряд-ли получится сделать красиво. Но в принципе, можно все-же слегка облегчить жизнь:
Добавить в пару к QSqlDatabase::setConnectOptions еще один метод типа:
db.setConnectOption(int option, void*pointer);
А в QSqlDriver вынести опции коннекта из open() в отдельный метод и ... все. Этого хватит для использования уникальных для БД опций.

Записан
DpoHro
Гость
« Ответ #23 : Июнь 12, 2008, 00:17 »

Прокурил всю тему.
Значит пока что для mySQL нет решения?
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.104 секунд. Запросов: 23.