Nie używasz tego samego PreparedStatement
, metoda fabryczna Connection.prepareStatement
zwraca Ci nową instancję za każdym razem, gdy ją wywołasz. PreparedStatement.executeQuery
robi to samo z ResultSet
. Używasz tylko tych samych zmiennych.
Oznacza to wyciek zasobów — pierwszy PreparedStatement
i ResultSet
- za każdym razem, gdy wywoływana jest ta metoda, które nigdy nie są zamykane.
Moim zaleceniem byłoby użycie Springa JdbcTemplate
który prawidłowo obsłuży te zasoby bazy danych i podzielisz kod na dwie metody.