Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.43.190] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Интересует вопрос: как прерывать правильно долгоработающие запросы?
Ситуация следующая. В программе сделал интерфейс для генерации отчетности. Но реализовал пока "криво" - запрос делается в GUI-потоке, и пока запрос не отработает, окошко висит. Закрыть его не получится, ибо "Not Responding", что есть не по феншую. Хочу запрос вывести в отдельный поток, а в GUI потоке ловить нажатие кнопочки "Отмена". Все бы ничего, но как это с БД порешать? Нагуглил ответ, но все равно непонятка - запрос то висит в потоке. По приведенному совету, еще один поток открывать, или как? |
Сообщ.
#2
,
|
|
|
По-идее, можно обойтись без потока, если использовать вот это API: http://www.postgresql.org/docs/9.3/interac...ibpq-async.html
Для отмены текущего запроса, кстати, есть вот такое API: http://www.postgresql.org/docs/9.3/interac...bpq-cancel.html |
Сообщ.
#3
,
|
|
|
Пасип, заманчиво) Но я пользуюсь встроенными средствами Qt5 для работы с БД. Там все API построено на синхронных вызовах. До хендла соединения в принципе добраться можно, но если перевести в режим асинхронной работы - думаю Qt просто свалится.
|
Сообщ.
#4
,
|
|
|
Ну, в первом посте про это ничего не было сказано
В твоём случае, думаю, да -- открывать новое соединение в новом потоке, либо написать свой драйвер-прослоку между Qt и libpq |