JDBC-Treiber löst bei leerem ResultSet die Ausnahme "ResultSet Closed" aus

Ich habe ein Problem im JDBC-Treiber für SQLite.

Ich führe eine Abfrage mit SELECT-Anweisung aus.

Wenn ich ein leeres bekommeResultSet (0 Zeilen) Dann wird beim Aufruf eine "Closed ResultSet" -Ausnahme ausgelöstgetString(1).

Ohne viel Erfahrung mit JDBC konnte meine Theorie (die ich nicht über JavaDocs bestätigen konnte)ResultSet) ist dass

getString(1) funktioniert NICHT bei einer leeren (nullzeiligen) Ergebnismenge (beabsichtigt oder aufgrund eines Fehlers)ResultSet's "open" Flag ist auf gesetztfalse auf null Zeilen (wieder von Entwurf oder einem Fehler)

Ich habe es gesehenFehlerbericht aber ich bin nicht sicher, ob es verwandt ist.

Meine Fragen sind:

Ist die obige Theorie richtig?Ist es ein Bug? Merkmal? (Und wenn ja, kann jemand bitte auf die Dokumentation verweisen?)Ist es spezifisch für SQLItes JDBC oder generisch?ResultSet in allen JDBC-Treibern?Was ist die richtige Art und Weise, solche Dinge zu tun??

Für # 4 war meine Lösung zu verwendenisFirst() ruf gleich danach anexecuteQuery() um zu überprüfen, ob Zeilen in der Ergebnismenge vorhanden sind. Ist dies der Best-Practice-Ansatz?

(Ich hätte auch einfach einen Count Insetad auswählen können, da ich eigentlich keine Ergebnismenge brauchte, sondern nur ein Null-Nicht-Null-Flag, aber ich möchte wissen, was zu tun ist, wenn mir die Ergebnisse von select wichtig sind.)

Vielen Dank!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage