आप उसी PreparedStatement
. का उपयोग नहीं कर रहे हैं , फ़ैक्टरी विधि Connection.prepareStatement
हर बार जब आप इसे कॉल करते हैं तो आपको एक नया उदाहरण लौटा रहा है। PreparedStatement.executeQuery
ResultSet
के साथ भी ऐसा ही कर रहा है . आप बस उन्हीं वेरिएबल्स का उपयोग कर रहे हैं।
इसका मतलब है कि आप संसाधनों को लीक कर रहे हैं - पहला PreparedStatement
और ResultSet
- हर बार इस विधि को कहा जाता है, जिसे कभी बंद नहीं किया जा रहा है।
मेरा सुझाव है कि स्प्रिंग के JdbcTemplate
. का उपयोग करें जो आपके लिए इन डेटाबेस संसाधनों को सही ढंग से संभालेगा और आप अपने कोड को दो तरीकों में विभाजित करेंगे।