Russian Qt Forum

Qt => Базы данных => Тема начата: admin_007 от Январь 16, 2008, 20:37



Название: Обновление данных на Table или подобном элементе интерфейса
Отправлено: admin_007 от Январь 16, 2008, 20:37
Друзья, вот представьте себе обычная форма. На форме допустим QTableView. Есть БД на FireBird (ну может на любом движке)
Вот хочу сделать так, что бы при изменении данных в БД, это изменение отобразилось на элементах интерфейса (QTable).
Т.е. что бы это происходило автоматичеки без вмешательства пользователя или иных средств.

Допустим подключены несколько компов-клиентов к БД. Один пользователь что то сделал (например удалил запись или изменил значение где то в таблице) И сразу это отразилось у всех клиентов в реальном времени...
Есть вариант написать приложение клиент-сервер, ну а без него это можно как то сделать?

Спасибо!!!


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: ритт от Январь 16, 2008, 20:42
друг, форму представить себе не могу, ибо в кутэ нет такого термина...

ищи по форуму - много раз поднимался вопрос о вариантах "слежения" за изменениями в бд
если "движок" может быть любым, пусть это будет пг


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: Sergey B. от Январь 16, 2008, 21:07
В Qt 4.4 будет возможно на PostgreSQL и FireBird.
http://doc.trolltech.com/main-snapshot/qsqldriver.html#notification (http://doc.trolltech.com/main-snapshot/qsqldriver.html#notification)


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: ритт от Январь 16, 2008, 21:41
а я хренею, что у мускуля нет подобной возможности, как у пг, например...
когда-нибудь мне будет очень надо - и сделаю грязный хак мускулю на предмет сигнализации какой-нибудь

может, кто-нть уже этим озадачивался? кто-нть знает?


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: Tonal от Январь 17, 2008, 08:34
В мускуле всю жисть опрашивали таблицы на предмет последнего изменения.
Ну а в последних вроде UDF-ы и триггеры есть - так что можно ручками реализовать. :-)


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: ритт от Февраль 17, 2008, 18:35
юдф-ы есть давно, триггеры тоже достаточно давно появились (с 5.0.2)
всё-равно нужно какую-то ху*ту мудрить, т.к. нотифи нет и даже в 6-ой серии пока не предполагается...и как в таком случае сообщить клиенту об изменениях? разве что открывать в приложении порт на прослушку и из триггера устанавливать соединение - отправлять какой-нть нотификашен. других мыслей пока нет...
Тонал, есть идеи??!

только недавно порадовался качественному эмбеду мускуля, и вот опять разочаровываюсь в нём...
видимо, пора бросать мускуль и делать эмбед на птице и сервера на пг :(


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: Вячеслав от Февраль 17, 2008, 20:14
2 xep А чем тебе птиц в качестве сервера не нравиться ? ;) Летает и не жужжит ;) И evnt'Ы есть ;)

PS Тебе мессага дошла ?


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: ритт от Февраль 18, 2008, 00:02
Вячеслав, мессага дошла - всё жду когда в аську постучишься

от сервера мне нужна исключительно только производительность...если сможешь доказать, что птиц ничуть не хуже того же мускуля, возможно, задумаюсь о переброске сервера...
но сейчас этот вопрос меня меньше всего тревожит. на первое место сейчас встала сигнализация на клиентской стороне. не хочется сейчас "между делом" перевязывать всё на птица


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: Tonal от Февраль 18, 2008, 09:17
У нас приложения на птице, так что про мускуль не подскажу. :-(
С производительностью опять же по разному - птиц более продвинутый в плане оптимизатра, но он версионник, так что иногда можно налететь с непривычки.
Например, select count(*) from table вызовет полный скан таблицы, а в мускуле отработает сразу (порравят в в2.5).
С другой стороны, читающие транзакции не мешают пишущьим - поэтому, если читающих много, то версионник - лучший выбор.


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: crocus от Февраль 18, 2008, 11:38
Вопрос не в тему, но все-же, как в птице вывести данные в файл и из файла (типа mysql : load data local infile..)


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: Вячеслав от Февраль 18, 2008, 14:42
Вопрос не в тему, но все-же, как в птице вывести данные в файл и из файла (типа mysql : load data local infile..)
external table ?


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: Вячеслав от Февраль 18, 2008, 14:45
Вячеслав, мессага дошла - всё жду когда в аську постучишься
Млин :( Я про нее последнее время забыл - не до грибов ( Жена ремонт дома затеяла (моими руками :( )) Таки давай через форум\ЛС ....


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: Sergeich от Февраль 20, 2008, 02:06
Раз пошла такая пьянка :)
Други, подскажите неразумному, есть у какого-нить из встроенных движков поддержка нотификаций. После размышлений на данную тему понял, что оно в принципе реализуемо. Может кто-то ужо сделал?


Название: Re: Обновление данных на Table или подобном элементе интерфейса
Отправлено: Tonal от Февраль 20, 2008, 08:40
У птица есть. Я ей давно пользуюсь. :-)
правда работаю с ним не через Qt-ёвый драйвер. Но есои поискать, в этом форуме как-то пробегала реализация поддержки и для Qt-ёвого. А в 4.4 троли обещают встроить. :-)