У меня проблема с драйвером JDBC для SQLite.Драйвер JDBC генерирует исключение «ResultSet Closed» на пустом ResultSet
Я выполняю запрос с помощью инструкции SELECT.
Если я получу пустую ResultSet
(0 строк), тогда я вижу исключение «Закрытое ResultSet» при вызове getString(1)
.
Без большого предшествующего опыта JDBC, моя теория (которую я не смог подтвердить с помощью JavaDocs для ResultSet
) является то, что
getString(1)
не работает на пустой (нулевой строки) результирующем (по конструкции или из-за об ошибке)ResultSet
«s„открыт“флаг установлен вfalse
на нулевых строк (опять же, по конструкции или ошибка)
Я видел этот bug report, но я не уверен, если это связано ,
Мои мень- шей являются:
- Является ли теория выше правильно?
- Это ошибка? Особенность? (и если да, может кто-нибудь указать на документацию, пожалуйста?)
- Является ли он специфичным для JDBC SQLIte или для общего
ResultSet
во всех драйверах JDBC? - Каков правильный способ делать такие вещи??
Для # 4, мое решение было использовать isFirst()
вызов сразу после executeQuery()
проверить, являются ли какие-либо строки есть в наборе результатов. Это лучший подход?
(Я мог бы просто выбрать счетчик вставки, так как мне действительно не нужен набор результатов, просто нулевой ненулевой флаг, но я хочу знать, что нужно делать, если бы я заботился о результатах выбора)
Спасибо!
Спасибо всем! Очень хорошо освещает! – DVK