Ответ
 
Опции вопроса Поиск в этом вопросе Опции просмотра
  #1  
Старый 29.09.2011, 05:58
Аватар для Guest
Guest
Вопрос
Сообщений: n/a
По умолчанию

Дано:1. Открываю соединение с БД, создаю запрос.2. В треде этот запрос исполняется, причем довольно долго ("INSERT INTO...", время исполнения около получаса).3. Имеется диалог с кнопочкой "Отмена", который индицирует ход запроса и выводит ошибки и т.д.БД - Oracle 9, если это важно.Задача: по нажатию "Отмена" корректно прибить запрос, который находится в стадии исполнения (работает exec()).Пробовал прибивать тред и через указатель на QSqlQuery очищать его, а также закрывать соединение. Но это не работает, сессия Oracle все равно висит и находится в статусе active, т.е. запрос продолжает работать. Все действия над этим соединением (QSqlDatabase) приводят к подвисанию основного треда. Я конечно могу открывать второй, третий и т.д. экземпляры соединения и далее работать с ними, но это не катит, т.к. плодятся сессии и к тому же лочатся таблицы, которые я задействовал в том запросе (т.е. работать с ними я все равно не могу).Есть идеи как убить запрос? Желательно средствами Qt...
Ответить с цитированием
Ответ



Похожие вопросы
Тема Автор Раздел Ответов Последний вопрос или ответ
Убить, убить, убить или Тупая образовательная система Guest Продолжение старого архива 0 01.10.2011 04:55
Кавычки в QSqlQuery Guest Новый архив 3 0 29.09.2011 07:12
Наследование QSqlQuery Guest Новый архив 2 0 29.09.2011 07:01
QSqlQuery & bindValue() Guest Продолжение нового архива 0 29.09.2011 06:25
QSqlQuery - нужно вывести полный запрос в случае с bind Guest Новый архив 3 0 29.09.2011 06:13



© www.otvetnemail.ru - Форум вопросов и ответов.