आप कहते हैं कि आप SQL कथनों के बैच निष्पादित कर रहे हैं, इसलिए मैं मान रहा हूँ कि आप executeBatch
का उपयोग कर रहे हैं . जब आप executeBatch
कथनों का एक बैच, कुछ कथन सफल हो सकते हैं और कुछ कथन विफल हो सकते हैं। यदि एक कथन विफल हो जाता है, तो इसका मतलब यह नहीं है कि JDBC ड्राइवर सफल होने वाले कथनों को वापस ले लेता है। JDBC ड्राइवर बैच में सभी कथनों को निष्पादित करने का प्रयास करना चुन सकता है यदि एक कथन विफल हो जाता है या एक कथन विफल होने पर बैच में कथनों को निष्पादित करना बंद करना चुन सकता है (ऐसा लगता है कि आप जिस ड्राइवर का उपयोग कर रहे हैं वह कथनों को निष्पादित करना बंद करना चुनता है जैसे ही कोई विफलता होती है)।
जब बैच में एक कथन विफल हो जाता है, तो आपको एक BatchUpdateException
प्राप्त करना चाहिए . अपने अपवाद हैंडलर में, आपको getUpdateCounts
. पर कॉल करने की आवश्यकता है . यह आपको int
. की एक सरणी देगा जो आपको बताता है कि स्टेटमेंट में कितनी पंक्तियां अपडेट की गई हैं, एक Statement.SUCCESS_NO_INFO
यह दर्शाता है कि कथन सफल हुआ लेकिन कोई पंक्ति गणना उपलब्ध नहीं थी, या एक Statement.EXECUTE_FAILED
यह दर्शाता है कि कथन विफल रहा। यदि पहले 99 कथन सफल होते हैं, तो 100वाँ कथन एक त्रुटि उत्पन्न करता है, और शेष कथनों को निष्पादित नहीं किया जाता है, आपको एक 100 तत्व सरणी वापस मिलनी चाहिए जहाँ पहले 99 तत्व सफलता का संकेत देते हैं और 100वाँ तत्व Statement.EXECUTE_FAILED
को इंगित करता है। कोड> . तब आपके कोड को उन कथनों को पुनः प्रयास करने की आवश्यकता होगी जिन्हें निष्पादित नहीं किया गया था (इस मामले में, कथन 101-1000)।