Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
#1

Как заставить прогу на с++ ждать новые записи из БД - C++

05.07.2011, 12:09. Просмотров 910. Ответов 13
Метки нет (Все метки)

Нужно чтобы прога на с++ ждала новых записей в БД
и если они поступят производила с ними кое какие действия
Вопрос в том как именно прога должна ждать эти записи

сейчас додумался только до того чтобы сделать вечный цикл
с помощью оператора goto и поставить задержку в цикле на пару секунд с помощью sleep

какие еще есть варианты решения моей проблемы ведь везде пишут что использование goto плохо ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2011, 12:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как заставить прогу на с++ ждать новые записи из БД (C++):

Как заставить поток ждать в некоторых ситуациях - C++
Есть такой сценарий приложения: Приложение до запуска TCP кеширует данные из MySQL в std::vector, далее запускается TCP и ожидаются...

Как заставить машину ждать перед очередным выполнением цикла? - C++
есть код#include <stdio.h> #include <iostream> #include <conio.h> using namespace std; int main(int argc, char *argv) { ...

Как заставить работать прогу без Visual Studio? - C++
Вот написал программу на заказ, в студии работает, а вот если запускаю exe файл вне студии то прога завершает работу #include <iostream> ...

Сделать конструктор или заставить прогу работать - C++
П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. Хотел сделать "генератор кода"...

Как заставить цикл ждать ? - C (Си)
Есть массив времён которые обрабатываются в цикле. В теле цикла запускается таймер который по окончании работы вызывает прерывание....

Как заставить браузер не ждать ответа? - PHP
Суть такова... Принимаю POST, а теперь браузер надо послать на три веселые буквы и выполнять дальше код! В данный момент у меня принимается...

13
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2011, 12:15 #2
Зачем здесь цикл вообще...
Поставить cin.get() например, и прога будет ждать, пока что-нибудь не введут.
Метки здесь ни к чему, но иногда их можно использовать. Вообще их стали считать плохим стилем после того, как их закритиковал Дейкстра =)
0
Bers
Заблокирован
05.07.2011, 12:17 #3
sleep() то зачем делать?
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
05.07.2011, 12:19 #4
Цитата Сообщение от nill Посмотреть сообщение
сделать вечный цикл с помощью оператора goto
А делать вечный цикл с помощью операторов цикла уже не кошерно?
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
05.07.2011, 12:22  [ТС] #5
diagon,
кто будет вводить ? прога должна работать полностью автоматически


Bers,
Чтобы не долбилась к базе данных все время


mimicria,
А это как можно пример? и вообще идея с вечным циклом сама по себе правильная ?
0
Bers
Заблокирован
05.07.2011, 12:24 #6
diagon, вот такой вопрос к вам:

Можно ли как нибудь сопоставлять потокам что нибудь своё?

Например, объявить поток ввода/вывода где нибудь. Запиндюрить туда что нибудь своё (объект какой нибудь)

А потом, где-то совсем другом месте, на хз каком то уровне абстракции вытащить из этого потока запиндюренный объект?

Интересует конкретно, как при помощи потоков осуществлять транспортировку данных из одного слоя абстракции (а ещё лучше - из одного процесса) в совершенно другой.
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
05.07.2011, 12:28 #7
Цитата Сообщение от nill Посмотреть сообщение
А это как можно пример?
while (условие) { действия }
Цитата Сообщение от nill Посмотреть сообщение
и вообще идея с вечным циклом сама по себе правильная ?
Поскольку я чаще всего пишу на BCB, я бы вместо цикла использовал таймер
1
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2011, 12:29 #8
Цитата Сообщение от nill Посмотреть сообщение
кто будет вводить ? прога должна работать полностью автоматически
А как данные в бд будут появляться? Какая среда программирования вообще?

Bers, хм... никогда не интересовался. И вообще, если вы считаете меня экспертом, то вы ошибаетесь =)
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
05.07.2011, 12:31  [ТС] #9
mimicria,
что такое таймер ?
можно пример

Добавлено через 1 минуту
diagon,
данные в бд будут появляться от другой проги в которую уже вводят руками
среда программирования VS2008
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
05.07.2011, 12:37 #10
Цитата Сообщение от nill Посмотреть сообщение
что такое таймер ?
можно пример
Использование таймера
1
Bers
Заблокирован
05.07.2011, 12:49 #11
Цитата Сообщение от diagon Посмотреть сообщение
Bers, хм... никогда не интересовался. И вообще, если вы считаете меня экспертом, то вы ошибаетесь =)
Просто я знаю, что можно))
Но я нигде не смог найти информацию. Во всех книгах о потоках пишут примерно одинаково, и на уровне новичка - считать строку, вывести строку в консоли....

Где бы вот найти материал по углубленному изучению потоков...
0
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
05.07.2011, 12:58 #12
Цитата Сообщение от nill Посмотреть сообщение
Нужно чтобы прога на с++ ждала новых записей в БД
Для того чтобы твоя прога ждала новых записей ей нужно уведомление от БД(шутка) или от другой программы если она находиться на одной машине то через файл отображаемый на память общаться процессы могут если в локалке то другой способ нужен. Или придёться постояно конектиться к базе, для этого лучше в базе завести таблицу с одним столбцом тип дата - последнего обновления с другой программы когда в ручную данные вводишь то в это поле делаешь обновление, а та прога которая ждёт проверяет это поле с датой через ну где-то 10-30 секунд на твоё усмотрение, сравниваешь дату со своей считанной датой с предыдущего запроса если дата обновилась то начинаешь что нибудь делать с БД.
C++
1
2
3
4
5
6
while(1) {
 
   ...  // тут код
 
   Sleep(15000);  // 15  - секунд
}
Вообще что за БД, триггером нельзя обойтись или тебе для внешнего пользования нужны данные с БД.
1
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
05.07.2011, 19:12  [ТС] #13
xAtom,
БД Postgres
почитал про триггер

как бы он, если правильно понял, делает что то внутри БД

А мне надо чтобы после того как поступят новые данные в БД, с++ прога которая их ждет произвела кое какие расчеты и записала результат в БД
думаю тут триггер не поможет ?
0
Bers
Заблокирован
05.07.2011, 19:46 #14
я конечно могу ошибаться, потому что для меня это неизученная область (я просто не сталкивался с подобными задачами), но возможно вам стоит посмотреть в сторону <signal.h>

И я даже предлагаю вам ознакомится с материалом по этой ссылочке:
http://icmp.ru/man/MAN/SIGNAL.htm

Добавлено через 8 минут
о кстати, на викки есть неплохое описание

http://ru.wikipedia.org/wiki/Signal.h
0
05.07.2011, 19:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2011, 19:46
Привет! Вот еще темы с ответами:

Как заставить сервера ждать? Java Sockets - Java SE
Как после отключение последнего клиента заставить сервера ждать новых подключений и не отключиться?

Как заставить foreach ждать нажатия кнопки для продолжения? - Java
У меня этим циклом идет перебор объектов ArrayList, на каждой итерации вызывается метод с обработчиками событий для этих оюъектов. Мне надо...

Как заставить один поток ждать, пока работает другой - C#
Здравствуйте, стоит такая задача: есть public static bool forks = new bool;// false - свободна public void takeFirstSpoon(int...

Как заставить поток ждать, пока не будет выполнено определенное действие? - Visual Basic .NET
Добрый день. Решил написать небольшую игру в VB .NET Первая версия оказалась рабочей, однако я ее написал без потоков, поэтому все...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru