我认为
PreparedStatement应该通过调用将定义从循环中拉出并在循环内重用
clearParameters:
pstatement = db_connection.prepareStatement(PDSLnPConstants.UPSERT_SQL); // create a statementfor (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)。如果要测试,则可能需要稍等片刻以清理现有的“打开”游标。



