Ich möchte wissen, ob ResultSet geschlossen werden kann, wenn ich es nicht geschlossen habe? Ich habe eine "ResultSet is closed"-Ausnahme, aber ich bin sicher, dass ich das ResultSet nirgendwo geschlossen habe. Was ich genau tue, ist, dass ich das ResultSet verwende, um eine SELECT-Abfrage durchzuführen, und dann das gleiche ResultSet verwende, weil es von dieser Methode aufgerufen wird:
public Object getValueAt( int row, int column )
throws IllegalStateException {
// ensure database connection is available
if ( !dbConnection.isConnectedToDatabase() )
throw new IllegalStateException( "Not Connected to Database" );
// obtain a value at specified ResultSet row and column
try {
getResultSet().absolute( row + 1 );
return getResultSet().getObject( column + 1 );
} // end try
catch ( SQLException sqlException ) {
System.out.println("Exception from here dude");
sqlException.printStackTrace();
} // end catch
return ""; // if problems, return empty string object
} // end method getValueAt
Also, eine andere Frage: Gibt es eine Möglichkeit, um sicherzustellen, dass das ResultSet geöffnet wird?
Dritte Frage: Vielleicht liegt das Problem daran, dass ich ResultSets nie schließe.
Welchen Sinn hat das Schließen von ResultSet?
Bearbeiten : So wird die Anweisung im Konstruktor einer Klasse namens DBConnection erstellt:
Class.forName(driver);
// connect to database
connection = DriverManager.getConnection(url, username, password);
// create Statement to query database
statement = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY );
//connection ok
connectedToDatabase=true;
ResultSet wird später erstellt, wenn ich eine Anweisung ausführen möchte.