executeQuery () не возвращается - PullRequest
1 голос
/ 07 июня 2009

Есть ли условие, при котором следующее утверждение

PreparedStatement.executeQuery()

не возвращает или не выдает исключение?

Ответы [ 2 ]

6 голосов
/ 07 июня 2009

Это зависит от используемой вами базы данных и настроенного уровня изоляции. Обычно по умолчанию SELECT блокируется, если вы пытаетесь выбрать записи, которые были обновлены в другой транзакции, которая еще не зафиксирована.

Вы пытаетесь выбрать незафиксированные данные? Какую базу данных вы используете?

В качестве альтернативы ваш запрос может занять очень много времени. Устраните (или подтвердите) эту возможность, выполнив запрос через какой-либо инструмент базы данных.

Вы также можете позвонить setQueryTimeout(), чтобы запрос не блокировался "навсегда".

1 голос
/ 07 июня 2009

Если он не вернулся, значит, он все еще выполняет ваш запрос или все еще получает результаты.

Попробуйте выполнить запрос вне java, используя какой-либо инструмент базы данных, и убедитесь, что он выполняется своевременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...