Je gebruikt niet dezelfde PreparedStatement , de fabrieksmethode Connection.prepareStatement geeft u elke keer dat u het aanroept een nieuwe instantie. PreparedStatement.executeQuery doet hetzelfde met ResultSet . Je gebruikt gewoon dezelfde variabelen.
Dit betekent dat je bronnen lekt - de eerste PreparedStatement en ResultSet - elke keer dat deze methode wordt aangeroepen, die nooit worden gesloten.
Mijn aanbeveling zou zijn om Spring's JdbcTemplate . te gebruiken die deze databasebronnen correct voor u afhandelt en u verdeelt uw code in twee methoden.