J'ai un problème dans le pilote JDBC pour SQLite.Le pilote JDBC lève l'exception "ResultSet Closed" sur vide ResultSet
J'exécute une requête avec l'instruction SELECT.
Si je reçois un vide ResultSet
(0 lignes) alors je vois une exception "Closed ResultSet" levée lors de l'appel getString(1)
.
Sans expérience JDBC bien avant, ma théorie (que je ne pouvais pas confirmer par JavaDocs pour ResultSet
) est que
getString(1)
ne fonctionne pas sur un vide (zéro ligne) resultset (par la conception ou en raison de un bug)- drapeau « ouvert » de
ResultSet
est réglé surfalse
sur zéro lignes (encore une fois, par la conception ou un bug)
j'ai vu ce bug report mais ne suis pas sûr que ce soit lié .
Mes qeustions sont:
- Est-ce la théorie ci-dessus correcte?
- Est-ce un bug? Fonctionnalité? (et si oui, quelqu'un peut-il pointer vers la documentation s'il vous plaît?)
- Est-il spécifique à JDBC de SQLIte ou à générique
ResultSet
dans tous les pilotes JDBC? - Quelle est la bonne façon de faire des choses comme ça??
Pour # 4, ma solution était d'utiliser isFirst()
appel juste après executeQuery()
pour vérifier si toutes les lignes sont là dans le jeu de résultats. Est-ce l'approche des meilleures pratiques?
(Je pourrais aussi avoir simplement sélectionné un compte insetad puisque je n'avais pas vraiment besoin d'un ensemble de résultats, simplement zéro-non nul, mais je veux savoir ce que je devrais faire si je faisais attention aux résultats de select)
Merci!
Merci à tous! Très éclairant! – DVK