Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

JDBC बैच इंसर्ट अपवाद हैंडलिंग

आप कहते हैं कि आप 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)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी ## उपसर्ग के बिना ओरेकल मल्टीटेनेंट 12 सी में उपयोगकर्ता कैसे बनाएं?

  2. Oracle SQL PIVOT तालिका

  3. क्या स्पष्ट एएनएसआई जॉइन बनाम निहित जॉइन के उपयोग पर ओरेकल की आधिकारिक सिफारिश है?

  4. Oracle IN क्लॉज में 1000 से अधिक मान कैसे डालें?

  5. Oracle अनुक्रम 1 के बजाय 2 से शुरू होता है