क्या यह विधि प्रत्येक विधि कॉल के साथ तैयार किए गए स्टेटमेंट को खोलना और बंद करना चाहिए?
यदि आप विधि के भीतर PreparedStatement
ऑब्जेक्ट बना रहे हैं, तो आपको इसके साथ पूरा करने के बाद इसे बंद करना होगा। आप एकाधिक निष्पादन के लिए PreparedStatement
ऑब्जेक्ट का पुन: उपयोग कर सकते हैं, लेकिन एक बार जब आप इसके साथ काम कर लेंगे, तो आपको इसे बंद करना होगा।
ऐसा इसलिए है, हालांकि सभी स्टेटमेंट ऑब्जेक्ट्स (प्रीपेर्डस्टेटमेंट्स सहित) को Connection.close()
पर आक्रमण करने पर बंद किया जाना चाहिए, यह शायद ही कभी मामला है। विशेष रूप से ओरेकल के कुछ जेडीबीसी ड्राइवरों में, कनेक्शन कनेक्शन बंद करने में असमर्थ होगा यदि कनेक्शन ने परिणामसेट और स्टेटमेंट ऑब्जेक्ट्स को बंद कर दिया है। इसका मतलब यह होगा कि, इन ड्राइवरों पर:
- आपको कभी भी प्रीपेयरस्टेटमेंट ऑब्जेक्ट का संदर्भ खोना नहीं चाहिए। यदि आप करते हैं, तो कचरा संग्रह होने तक कनेक्शन बंद नहीं होगा। यदि आप विभिन्न एसक्यूएल स्टेटमेंट्स के लिए प्रीपेयरस्टेटमेंट इंस्टेंस का पुन: उपयोग कर रहे हैं, तो इसे भूलना आसान है।
- आपको आवश्यकता होने के बाद आपको तैयार किए गए स्टेटमेंट को बंद करना चाहिए। केवल तब कनेक्शन.क्लोज़() वास्तव में भौतिक कनेक्शन को फाड़ सकता है।
स्रोत
2011-06-15 06:54:54