समाधान 1
अपने दो इंसर्ट ऑपरेशंस के लिए दो अलग-अलग स्टेटमेंट इंस्टेंस बनाएं।
समाधान 2
यदि आप एक स्टेटमेंट इंस्टेंस का पुन:उपयोग करना चाहते हैं, तो संसाधनों को अंत में . में बंद करें खंड मैथा। वास्तव में आखिरकार . में करीबी बयान देना हमेशा एक अच्छा विचार है ब्लॉक करें या बस कोशिश-पकड़-संसाधन का उपयोग करें कि jdk7+ की पेशकश करनी है।
आपके ठोस सवालों से असंबंधित
- यह अत्यधिक अनुशंसा की जाती है कि आप जेएसपी फ़ाइल में जावा कोड का उपयोग करने से बचें। "जेएसपी सर्वलेट एमवीसी" शब्द खोजें।
- एसक्यूएल इंजेक्शन हमले से बचने के लिए स्टेटमेंट के बजाय रेडीस्टेटमेंट का उपयोग करें।
समाधान 1 के लिए संपादित करें:
अपने पहले प्रयास ब्लॉक में:Statement myStatement = myConnection.createStatement();
के अंतर्गत Statement myStatementTwo = myConnection.createStatement();
अपने दूसरे प्रयास ब्लॉक में:
बदलें myStatement.executeUpdate(sqlString);
से myStatementTwo.executeUpdate(sqlString);
अपने पहले प्रयास ब्लॉक के लिए एक अंतिम ब्लॉक जोड़ें और वहां अपने सभी संसाधन बंद करें। अपने कोड को संपादित करना बहुत कुछ बिलकुल वैसा ही है जैसे शुरुआत से सब कुछ फिर से लिखना, यदि आप इसे स्वयं कर सकते हैं तो इससे आपको सबसे अधिक लाभ होगा।
OP द्वारा HTML कोड और डेटाबेस प्रदान करने के बाद संपादित करें
आपकी Dest_has_Categories तालिका का Dest_idDest एक auto_increment है कॉलम लेकिन यह गंतव्य . को संदर्भित करने वाली एक विदेशी कुंजी भी है की प्राथमिक कुंजी idDest . संदर्भ तालिका (संयुक्त तालिका) की विदेशी कुंजी नहीं होनी चाहिए auto_increment हो। यदि डीबीएमएस द्वारा उत्पन्न ऑटो इंक्रीमेंटेड वैल्यू रेफरेंसिंग टेबल में मौजूद नहीं है तो समस्याएँ होंगी।
कृपया विदेशी कुंजियों को auto_increment न बनाएं और जब आप संदर्भ तालिका में डालें Dest_has_Categories , कृपया मौजूदा श्रेणियां insert डालें की आईडी और गंतव्य की आईडी।
साथ ही, जब आप अपना कोड बदलते हैं, तो सर्वोत्तम अभ्यास के लिए मेरे समाधान 2 का भी उपयोग करना सुनिश्चित करें।