Nepoužíváte stejný PreparedStatement , tovární metoda Connection.prepareStatement vám vrací novou instanci pokaždé, když ji zavoláte. PreparedStatement.executeQuery dělá totéž s ResultSet . Pouze používáte stejné proměnné.
To znamená, že vám unikají zdroje – první PreparedStatement a ResultSet - při každém volání této metody, které se nikdy neuzavírají.
Moje doporučení by bylo použít Spring's JdbcTemplate který za vás bude správně zpracovávat tyto databázové zdroje a rozdělíte svůj kód na dvě metody.