Russian Qt Forum

Qt => Базы данных => Тема начата: baka от Октябрь 14, 2007, 09:17



Название: как организовать программку?
Отправлено: baka от Октябрь 14, 2007, 09:17
ситуация :
существует БД на MySQL'е на сервере
к ней подсоединяются несколько пользователей с помощью моего приложения.
в моем приложении существует виджет на основе QTreeWidget, заполняется он  на основе таблицы БД
пользователь имеет возможность добавлять данные в дерево, а также выбирать элементы дерева.

как сделать так чтобы в случае изменения данных одним пользователем все остальные экземпляры программы(на других компах)
узнавали что вот такая вот таблица изменилась. (и обновляли бы содержание MyTreeWidget'а

(знаю что в Qt 4.4 будет сигнал от драйвера БД, но 4.4 еще не вышла )

есть ли к.либо еще способы???


Название: Re: как организовать программку?
Отправлено: Racheengel от Октябрь 14, 2007, 09:44
дык, через сокеты шли команду от сервера всем клиентам...


Название: Re: как организовать программку?
Отправлено: Вячеслав от Октябрь 14, 2007, 10:02
из тупых вариантов - добавить к таблице поле типа DATETIME\TIMESTAMP и при добавлении(редактировании) итема обновлять вышестоящего(родителя) (или рукаими или тригером) а далее в клиента впихиваешь таймер и смотришь - менялось поле у итема во вьюхе или нет - поменялось - или кнопку обновления разрешили(IMHO это правильнее) или перечитываешь данные автоматом ....


Название: Re: как организовать программку?
Отправлено: Kainit от Октябрь 14, 2007, 12:16
Именно для этих целей, уже лет 10 не используется двухзвенная архитектура. Над базой данных напиши простенький сервлет, через который будут выполняться все операции и который будет оповещать клиентов об изменении базы.
Все другие способы - через одно отверстие, трёх-и-более-звенные архитектуры придуманы умными людьми и не зря.


Название: Re: как организовать программку?
Отправлено: baka от Октябрь 14, 2007, 12:25
Спасибо.

(сам уже хотел делать так : в БД заводится таблица с логинами и IP'шниками всех подключенных к БД
при внесении изменений клиентское приложение читает из этой таблицы  ip-адреса остальных и отправляет им сообщения так мол и так я такую-то таблицу изменил).

Щас почитал, буду смотреть в сторону сервлетов.


Название: Re: как организовать программку?
Отправлено: Kainit от Октябрь 14, 2007, 13:03
Кстати, возможно будет интересно почитать нововведения Qt 4.4
http://prog.org.ru/forum/topic_6124_0.html (http://prog.org.ru/forum/topic_6124_0.html)
там они что-то желаемой вами рассылки планируют сделать, но всё таки это не совсем хорошо...


Название: Re: как организовать программку?
Отправлено: crocus от Октябрь 15, 2007, 02:09
Попробуй может по таймеру отправлять запрос "SHOW TABLE STATUS LIKE ..."- получишь  время - сравнишь, если надо обновишь свой виджет.