Il driver JDBC lancia l’eccezione “ResultSet Closed” sul ResultSet vuoto

Ho un problema nel driver JDBC per SQLite.

Sto eseguendo una query con l’istruzione SELECT.

Se ottengo un ResultSet vuoto (0 righe), viene visualizzata un’eccezione “Closed ResultSet” generata quando si chiama getString(1) .

Senza molta esperienza JDBC precedente, la mia teoria (che non ho potuto confermare tramite JavaDocs per ResultSet ) è quella

  • getString(1) NON funziona su un getString(1) risultati vuoto (a riga zero) (in base alla progettazione o a causa di un bug)
  • Il flag “open” di ResultSet è impostato su false su zero righe (di nuovo, per progettazione o bug)

Ho visto questo bug report ma non sono sicuro che sia correlato.

Le mie preghiere sono:

  1. La teoria sopra è corretta?
  2. E ‘un errore? Caratteristica? (e se sì, qualcuno può indicare la documentazione per favore?)
  3. È specifico del JDBC di SQLIte o del ResultSet generico in tutti i driver JDBC?
  4. Qual è il modo corretto di fare cose del genere? ?

Per il n. 4, la mia soluzione era usare la chiamata isFirst() subito dopo executeQuery() per verificare se ci sono righe nel set di risultati. È questo l’approccio migliore?

(Avrei anche potuto semplicemente selezionare un conteggio in insetad poiché non avevo davvero bisogno di un set di risultati, semplicemente zero-zero-zero, ma voglio sapere cosa devo fare correttamente se mi interessa i risultati di select)

Grazie!