Не използвате същия PreparedStatement
, фабричният метод Connection.prepareStatement
ви връща нов екземпляр всеки път, когато го извикате. PreparedStatement.executeQuery
прави същото с ResultSet
. Вие просто използвате едни и същи променливи.
Това означава, че изтичате ресурси - първият PreparedStatement
и ResultSet
- всеки път, когато се извиква този метод, които никога не се затварят.
Моята препоръка би била да използвате JdbcTemplate
на Spring който ще обработва тези ресурси на базата данни правилно вместо вас и вие разбивате кода си на два метода.