DarthShader
Erfahrenes Mitglied
Hallo,
ich habe gerade ein kleines Code-Design Problem, bei dem ich gerne einmal Eure Meinung hören würde. Es geht um eine Datenbank Abfrage per jdbc und der Datenbank HSQLDB.
Ich habe eine Methode, in der ich die Abfrage (SQL Query) ausführe. Bekannterweise erhält man als Ergebnis ein ResultSet, in dem die Datensätze enthalten sind.
Nun sieht das folgendermaßen aus:
Dort wo der Kommentar "// ResultSet auswerten..." steht, sollten die Daten aus dem ResultSet verarbeitet werden. Ich möchte jedoch das ResultSet als Rückgabewert der Methode haben, sprich irgendwo unten steht dann "return rs;".
Aber: wenn das ResultSet geschlossen wird ( rs.close() ), kann ich nicht mehr viel damit anfangen. Aber wenn ich es zurückliefere, wird es ja automatisch geschlossen, da ich den finally Block habe. Und sollte man ein ResultSet nicht auch vernünftigerweise schließen?
Also ist es schlecht, als Rückgabetyp der Methode ein ResultSet zu haben, damit die Auswertung der Daten an einer anderen Stelle geschehen kann? Sollte ich einen eigenen Ergebnistyp (2-dim Array) erstellen, in den ich die Datensätze aus dem ResultSet hineinkopiere und diesen dann zurückliefere? Oder ist es in Ordnung, das ResultSet nicht zu schließen und einfach zurückzuliefern?
Vielen Dank für Eure Hilfe
ich habe gerade ein kleines Code-Design Problem, bei dem ich gerne einmal Eure Meinung hören würde. Es geht um eine Datenbank Abfrage per jdbc und der Datenbank HSQLDB.
Ich habe eine Methode, in der ich die Abfrage (SQL Query) ausführe. Bekannterweise erhält man als Ergebnis ein ResultSet, in dem die Datensätze enthalten sind.
Nun sieht das folgendermaßen aus:
Java:
try {
con = DriverManager.getConnection( "jdbc:hsqldb:hsql://localhost/test", "sa", "" );
Statement s = con.createStatement();
rs = s.executeQuery( query );
// ResultSet auswerten...
rs.close();
s.close();
}
catch ( SQLException e ) {
e.printStackTrace();
}
finally {
if ( con != null )
try { con.close(); } catch ( SQLException e ) { e.printStackTrace(); };
}
Dort wo der Kommentar "// ResultSet auswerten..." steht, sollten die Daten aus dem ResultSet verarbeitet werden. Ich möchte jedoch das ResultSet als Rückgabewert der Methode haben, sprich irgendwo unten steht dann "return rs;".
Aber: wenn das ResultSet geschlossen wird ( rs.close() ), kann ich nicht mehr viel damit anfangen. Aber wenn ich es zurückliefere, wird es ja automatisch geschlossen, da ich den finally Block habe. Und sollte man ein ResultSet nicht auch vernünftigerweise schließen?
Also ist es schlecht, als Rückgabetyp der Methode ein ResultSet zu haben, damit die Auswertung der Daten an einer anderen Stelle geschehen kann? Sollte ich einen eigenen Ergebnistyp (2-dim Array) erstellen, in den ich die Datensätze aus dem ResultSet hineinkopiere und diesen dann zurückliefere? Oder ist es in Ordnung, das ResultSet nicht zu schließen und einfach zurückzuliefern?
Vielen Dank für Eure Hilfe