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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как организовать программку?  (Прочитано 4390 раз)
baka
Гость
« : Октябрь 14, 2007, 09:17 »

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

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

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

есть ли к.либо еще способы???
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Октябрь 14, 2007, 09:44 »

дык, через сокеты шли команду от сервера всем клиентам...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Вячеслав
Гость
« Ответ #2 : Октябрь 14, 2007, 10:02 »

из тупых вариантов - добавить к таблице поле типа DATETIME\TIMESTAMP и при добавлении(редактировании) итема обновлять вышестоящего(родителя) (или рукаими или тригером) а далее в клиента впихиваешь таймер и смотришь - менялось поле у итема во вьюхе или нет - поменялось - или кнопку обновления разрешили(IMHO это правильнее) или перечитываешь данные автоматом ....
Записан
Kainit
Гость
« Ответ #3 : Октябрь 14, 2007, 12:16 »

Именно для этих целей, уже лет 10 не используется двухзвенная архитектура. Над базой данных напиши простенький сервлет, через который будут выполняться все операции и который будет оповещать клиентов об изменении базы.
Все другие способы - через одно отверстие, трёх-и-более-звенные архитектуры придуманы умными людьми и не зря.
Записан
baka
Гость
« Ответ #4 : Октябрь 14, 2007, 12:25 »

Спасибо.

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

Щас почитал, буду смотреть в сторону сервлетов.
Записан
Kainit
Гость
« Ответ #5 : Октябрь 14, 2007, 13:03 »

Кстати, возможно будет интересно почитать нововведения Qt 4.4
http://prog.org.ru/forum/topic_6124_0.html
там они что-то желаемой вами рассылки планируют сделать, но всё таки это не совсем хорошо...
Записан
crocus
Гость
« Ответ #6 : Октябрь 15, 2007, 02:09 »

Попробуй может по таймеру отправлять запрос "SHOW TABLE STATUS LIKE ..."- получишь  время - сравнишь, если надо обновишь свой виджет.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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