O driver JDBC lança a exceção “ResultSet Closed” no ResultSet vazio
Eu tenho um problema no driver JDBC para SQLite.
Estou executando uma consulta com a instrução SELECT.
Se eu tiver um vazioResultSet
(0 linhas), em seguida, vejo uma exceção "Closed ResultSet" lançada ao chamargetString(1)
.
Sem muita experiência prévia em JDBC, minha teoria (que eu não pude confirmar via JavaDocs paraResultSet
) é aquele
getString(1)
não funciona em um conjunto de resultados vazio (linha zero) (por design ou devido a um bug)ResultSet
A bandeira "aberta" está definida parafalse
em linhas zero (mais uma vez, por design ou um bug)Eu vi issorelatório de erro mas não tenho certeza se está relacionado.
Meus qeustions são:
A teoria acima está correta?Isso é um bug? Característica? (e em caso afirmativo, alguém pode apontar para documentação, por favor?)É específico para o JDBC do SQLIte ou para o genéricoResultSet
em todos os drivers JDBC?Qual é a maneira correta de fazer coisas assim??Para o # 4, minha solução foi usarisFirst()
ligar logo apósexecuteQuery()
para verificar se há linhas no conjunto de resultados. Esta é a abordagem de melhores práticas?
(Eu também poderia ter simplesmente selecionado uma contagem insetad desde que eu realmente não precisei de um conjunto de resultados, meramente zero-diferente de zero, mas eu quero saber o correto a fazer se eu me importasse com os resultados do select)
Obrigado!