मुझे लगता है कि PreparedStatement
परिभाषा को लूप से बाहर निकाला जाना चाहिए और clearParameters
. पर कॉल करके लूप के भीतर पुन:उपयोग किया जाना चाहिए :
pstatement = db_connection.prepareStatement(PDSLnPConstants.UPSERT_SQL); // create a statement
for (Entry<Integer, LinkedHashMap<Integer, String>> entry : GUID_ID_MAPPING.entrySet()) {
pstatement.setInt(1, entry.getKey());
pstatement.setString(2, entry.getValue().get(PDSLnPConstants.CGUID_ID));
pstatement.setString(3, entry.getValue().get(PDSLnPConstants.PGUID_ID));
pstatement.setString(4, entry.getValue().get(PDSLnPConstants.SGUID_ID));
pstatement.setString(5, entry.getValue().get(PDSLnPConstants.UID_ID));
pstatement.setString(6, entry.getValue().get(PDSLnPConstants.ULOC_ID));
pstatement.setString(7, entry.getValue().get(PDSLnPConstants.SLOC_ID));
pstatement.setString(8, entry.getValue().get(PDSLnPConstants.PLOC_ID));
pstatement.setString(9, entry.getValue().get(PDSLnPConstants.ALOC_ID));
pstatement.setString(10, entry.getValue().get(PDSLnPConstants.SITE_ID));
pstatement.executeUpdate();
pstatement.clearParameters();
}
आप बैच प्रोसेसिंग की जांच भी कर सकते हैं (addBatch
) यदि आप परीक्षण कर रहे हैं, तो मौजूदा "खुले" कर्सर को साफ करने के लिए आपको थोड़ा इंतजार करना पड़ सकता है।