|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.05.2010, 08:48 | #1 |
Пользователь
Регистрация: 25.05.2010
Сообщений: 24
|
Работа с БД по сети
Доброго времени суток коллеги.
Помогите разобраться с такой проблемой: с 2х машин подключался к одной БД. Параллельно вносил изменения в таблицы, при этом отображались изменения сделаные только на этой машине. Изменения происходят посредством SQL запроса. Как сделать чтобы после каждого действия (удаление записи, изменение, добавление), данные сразу сохранялись в таблицы и отображались на 2й машине? Заранее спасибо... |
27.05.2010, 09:47 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Так стоп...
Давай разделим понятия "данные сразу сохранялись в таблицы" и "отображались на 2й машине". Насчет первого ну смотря чем ты пользуешь, если есть транзакция то команда COMMIT сбросит ее на диск. Насчет второго, ну прикрепи к прокграмме механизм передачи сообщений через сокеты, и при фиксировании транзакции на одном клиенте всем остальным посылай сообщение переобновится, и пусть перечитываю БД (Или всем пошли строку, которую ты закоммитил в БД, тогда не придется напрягать сервер.)
I'm learning to live...
|
27.05.2010, 12:49 | #3 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Вопрос уже поднимался не раз. Самое простое решение: периодически перезапрашивать данные из СУБД. Так же некоторые СУБД поддерживают механизм событий и можно сделать, что сама СУБД будет всем рассылать информацию об изменениях.
Самый правильный вариант в общем случае: сделать кнопочку "обновить" по которой перезапрашивать данные из БД. Представьте, что один пользователь активно добавляет названия улиц в справочник. А в это же время другой пользователь пытается добавить нового клиента и не может добавить его адрес, т.к. никак не попадет в нужную улицу (строки же скачут из-за появления новых записей). |
27.05.2010, 12:53 | #4 | |
Пользователь
Регистрация: 25.05.2010
Сообщений: 24
|
Цитата:
Может подскажите альтернативные пути решения, или кусок кода на перезапрос? |
|
27.05.2010, 13:25 | #5 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Яж тее сказал - перешли всем пользователям сообщение, например через IDUDP компонент методом Broadcast, А в этом сообщении строку изменений. Цитата:
I'm learning to live...
|
||
27.05.2010, 19:47 | #6 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
2. В этом случае "скакать" табличка будет при активном удалении или изменении. 3. Редко кому это нужно в реальной жизни. Если кому-то нужно видеть данные из БД в реальном времени, то вряд ли таблица - удачный вариант представления информации. В общем, этим как правило решается не та проблема и не теми средствами. Это скорее латание дыр проекттирования программы или излишек, который никому не нужен. |
|
28.05.2010, 07:08 | #7 | |
Форумчанин
Регистрация: 20.06.2007
Сообщений: 270
|
Цитата:
Я не понимаю, зачем пользователю на втором компьютере во время редактирования тупо пялиться на таблицу и смотреть изменились где-то записи или нет. Он редактирует конкретную запись. Ее и надо проверять (если это действительно надо) перед тем как сохранить изменения и решать, сохранять их или нет. Что делается в это время с остальными записями пользователя волновать не должно. Закончил редактирование - обновил таблицу. Работаешь дальше с обновленным вариантом таблицы. Выбираешь другую запись для редактирования. PS: Если бы мне нужно было отслеживать измененные записи за определенный период времени, я бы ввел в таблицу поле типа TDateTime в котором автоматически проставлял бы время изменения записи, а потом делал бы выборку по этому полю.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько? (с) Библия. Вольный перевод с древнееврейского. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа программы в сети | нью | Фриланс | 1 | 09.02.2010 02:09 |
Администрирование сети. Работа со свичами. | Stilet | Общие вопросы по программированию, компьютерный форум | 11 | 09.04.2009 08:03 |
Работа программы в сети | Irsis | Microsoft Office Excel | 4 | 21.10.2008 08:38 |
Работа пользователей в сети | Mike_B | Софт | 1 | 17.08.2007 16:34 |