Oracle и QSqlQuery: как корректно убить запрос? |
Здравствуйте, гость ( Вход | Регистрация )
Oracle и QSqlQuery: как корректно убить запрос? |
zloy_d |
29.10.2009, 9:53
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 29.10.2009 Пользователь №: 1188 Спасибо сказали: 0 раз(а) Репутация: 0 |
Дано:
1. Открываю соединение с БД, создаю запрос. 2. В треде этот запрос исполняется, причем довольно долго ("INSERT INTO...", время исполнения около получаса). 3. Имеется диалог с кнопочкой "Отмена", который индицирует ход запроса и выводит ошибки и т.д. БД - Oracle 9, если это важно. Задача: по нажатию "Отмена" корректно прибить запрос, который находится в стадии исполнения (работает exec()). Пробовал прибивать тред и через указатель на QSqlQuery очищать его, а также закрывать соединение. Но это не работает, сессия Oracle все равно висит и находится в статусе active, т.е. запрос продолжает работать. Все действия над этим соединением (QSqlDatabase) приводят к подвисанию основного треда. Я конечно могу открывать второй, третий и т.д. экземпляры соединения и далее работать с ними, но это не катит, т.к. плодятся сессии и к тому же лочатся таблицы, которые я задействовал в том запросе (т.е. работать с ними я все равно не могу). Есть идеи как убить запрос? Желательно средствами Qt... |
|
|
Litkevich Yuriy |
29.10.2009, 14:03
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
тут наверное штатными средствами SQL-драйверов Qt ни как. Наверно только через API СУБД только
|
|
|
Текстовая версия | Сейчас: 21.12.2024, 20:18 |