आपने PreparedStatement#execute()
. के रिटर्न वैल्यू को गलत समझा ।
कृपया जावाडोक को ध्यान से पढ़ें:
<ब्लॉककोट>रिटर्न:
true
यदि पहला परिणाम एक ResultSet
है वस्तु; false
यदि पहला परिणाम एक अद्यतन गणना है या कोई परिणाम नहीं है।
यह इस प्रकार लौटाता है - जैसा कि पूरी तरह से अपेक्षित है - false
एक INSERT
. पर सवाल। यह केवल true
लौटाता है SELECT
. पर क्वेरी (जिसके लिए आप आमतौर पर executeQuery()
. का उपयोग करना चाहेंगे इसके बजाय जो सीधे ResultSet
returns लौटाता है )।
यदि आप प्रभावित पंक्तियों में रुचि रखते हैं, तो इसके बजाय PreparedStatement#executeUpdate()
का उपयोग करें बजाय। यह एक int
देता है जावाडोक के अनुसार:
रिटर्न:
या तो (1) SQL डेटा मैनिपुलेशन लैंग्वेज (DML) स्टेटमेंट के लिए पंक्ति गणना या (2) 0 SQL स्टेटमेंट के लिए जो कुछ भी नहीं लौटाते हैं
1 या इससे अधिक का वापसी मान तब एक सफल प्रविष्टि का संकेत देगा।
असंबंधित ठोस समस्या के लिए:आपका कोड डीबी संसाधनों को लीक कर रहा है। कृपया ध्यान से पढ़ें JDBC में कनेक्शन, स्टेटमेंट और रिजल्टसेट को कितनी बार बंद करना चाहिए?