Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
1

Простое приложение с синхронизацией с БД в реальном времени

28.07.2014, 13:35. Показов 2122. Ответов 19

Всем доброго времени суток.

У меня тема из раздела "Как делают такие вещи на самом деле?"
Есть БД Oracle на серваке. Нужно написать следующее приложение:
Форма авторизации, которая будет сравнивать введённые "Логин" и "Пароль" с соответствующими записями в таблице БД. Возможно три случая:
1) Введён логин и пароль, которых нет в таблице БД. Тогда выводим соотвествующее предупреждение.
2) Введён логин и пароль администратора. Закрываем текущую форму. Переходим к форме администратора.


Что из себя представляет форма администратора?
Это Jframe на котором Jtable и одна кнопка. Таблица должна синхронизироваться с таблицей БД в режиме реального времени. Кнопка для добавления записей в таблицу БД.

Всё это должно быть online.

Авторизацию хочу делать напрямую --- брать записи из таблицы и сравнивать с тем, что введено. Если верно, то закрываем форму и открываем форму администратора.
Для синхронизации в режиме реального времени хочу сделать поток, который будет соединяться с БД и делать SELECT из таблицы в бесконечном цикле.

Как делаются такие вещи в реальной жизни? Насколько я прав? Как вы делаете такие приложения в реальных проектах?
Буду благодарен любым предложениям, замечаниям, комментариям по данной теме.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2014, 13:35
Ответы с готовыми решениями:

UDP передача видео в реальном времени.
Kak s pomoshu java organizovat pereda4u video(v realnom vremeni s web kameri) s pomoshu UDP.

путаница с синхронизацией времени
у нас есть один DC (server 2008 r2). клиенты синхронизуются с DC. но есть один клиент, который тоже...

Оффлайн приложение на html5 с синхронизацией
В нашей небольшой компании появилась необходимость в внедрении простой системы управления заказами...

Подсчет времени в реальном времени
Добрый день, подскажи пожалуйста как нужно сделать что бы подсчитать количество часов. В первом...

19
Эксперт Java
2390 / 2216 / 564
Регистрация: 28.12.2010
Сообщений: 8,655
28.07.2014, 16:46 2
Вам подойдет модель MVC

Цитата Сообщение от LEQADA Посмотреть сообщение
Для синхронизации в режиме реального времени хочу сделать поток, который будет соединяться с БД и делать SELECT из таблицы в бесконечном цикле.
Это плохой вариант. Лучше слать нотификацию когда кто-то что-то меняет в БД.
1
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
28.07.2014, 17:24  [ТС] 3
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Лучше слать нотификацию когда кто-то что-то меняет в БД.
Но ведь мне нужно, чтобы все изменения в базе моментально отображались в таблице без всяких кнопок.
0
Эксперт Java
2390 / 2216 / 564
Регистрация: 28.12.2010
Сообщений: 8,655
28.07.2014, 17:36 4
LEQADA, пусть каждый клиент откроет какой нибудь сокет и слушает когда придет сообщение об изменении. Как только оно пришло, можно сделать выборку из БД
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
28.07.2014, 17:51  [ТС] 5
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
пусть каждый клиент откроет какой нибудь сокет и слушает когда придет сообщение об изменении. Как только оно пришло, можно сделать выборку из БД
можете рассказать об этом поподробнее?
0
Эксперт Java
2390 / 2216 / 564
Регистрация: 28.12.2010
Сообщений: 8,655
28.07.2014, 19:47 6
Что именно? Как посылать сообщение используя сокет? Или как принимать?
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
28.07.2014, 19:57  [ТС] 7
KEKCoGEN, как на стороне сервера, где сидит БД Oracle сделать штуку, которая отправляет по сокету сообщение о том, что в таблице были сделаны изменения?
0
Эксперт Java
2390 / 2216 / 564
Регистрация: 28.12.2010
Сообщений: 8,655
28.07.2014, 20:34 8
LEQADA, каждый клиент когда делает изменения в БД, должен отправить сообщение программе серверу что было сделанно изменение. Программа сервер должна разослать сообщение всем. В вашем случае можно сделать проще. Пусть клиент добавляет запись в какой нибудь файл, а клиенты обращаются к этому файлу чтобы посмотреть если там что-то изменилось. Если клиентов мало, то сильно на производительности это не скажется.
1
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
28.07.2014, 20:43  [ТС] 9
KEKCoGEN, а вообще нормально прямо по сокету обращаться к серверу? В плане безопасности.
0
Эксперт Java
2390 / 2216 / 564
Регистрация: 28.12.2010
Сообщений: 8,655
28.07.2014, 20:46 10
LEQADA, если ваш сервер ничего не делает кроме как говорит есть ли обновления в базе, то почему вас заботит безопасность?
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
28.07.2014, 20:48  [ТС] 11
KEKCoGEN, а нельзя, зная информацию о сокете, устроить DDoS атаку?
0
Эксперт Java
2390 / 2216 / 564
Регистрация: 28.12.2010
Сообщений: 8,655
28.07.2014, 20:51 12
LEQADA, можно. Зная информацию о подключении ддос можно устроить чему угодно
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
28.07.2014, 20:56  [ТС] 13
То есть вы предлагаете следующее:
Делаем изменения в базе. На сервере работает программа, которая следит за базой. И если там есть изменения, то записывает SELECT, скажем, в JSON файл и отправляет его по сокету клиенту. Клиент постоянно читает файл и если есть какие-то изменения, то парсит файл и выводит в таблицу. Так?
0
Эксперт Java
2390 / 2216 / 564
Регистрация: 28.12.2010
Сообщений: 8,655
28.07.2014, 21:24 14
LEQADA, нет.
Пусть при каждом изменении базы, клиент пишет в файл индикацию того что БД была изменена а так же сам периодически читает этот файл и если были изменения, идет в БД чтобы их получить.
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
28.07.2014, 21:27  [ТС] 15
KEKCoGEN, файл на сервере находится?
0
Эксперт Java
2390 / 2216 / 564
Регистрация: 28.12.2010
Сообщений: 8,655
28.07.2014, 21:28 16
LEQADA, где угодно.
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
28.07.2014, 21:35  [ТС] 17
Сделали изменение в таблице БД и написали в файл на сервере, что было сделано изменение. Клиент постоянно читает этот файл и если видит изменение, то делает напрямую SELECT и выводит на экран результат. Так?
0
Эксперт Java
2390 / 2216 / 564
Регистрация: 28.12.2010
Сообщений: 8,655
28.07.2014, 21:38 18
LEQADA, да.
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
28.07.2014, 21:41  [ТС] 19
KEKCoGEN, наша база выдаёт результат SELECT всем, кто захочет?
0
Эксперт Java
2390 / 2216 / 564
Регистрация: 28.12.2010
Сообщений: 8,655
28.07.2014, 21:44 20
LEQADA, откуда я знаю что выдает ваша база. Обычно чтобы подключится к БД нужен пароль. Так же БД обычно недоступна напрямую а только через сервер.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2014, 21:44
Помогаю со студенческими работами здесь

Отслеживание в реальном времени
Всё просто, есть переменная, которая инкрементится и когда она будет больше необходимого, надо...

COM порт в реальном времени
Возникла проблема при работе микроконтроллера с РС в реальном времени. Задача заключается в том...

Игра в реальном времени
Как реализовать в ac3 перемешение в реальном времени, при это чтоб все сохранялась на сервере и...

поиск в реальном времени
Гугл запускает поиск в реальном времени:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru