批量插入 1000 條數據,每條 1 參數,報數組下標越界。
Oracle JDBC 驅動對單次批處理的總參數數量有限制(默認 1000 或 2000)。總參數 = 參數個數 × 批次大小。示例中 1 參數 × 1000 條 = 1000 參數,觸及邊界。
// 減小批次大小
final int batchSize = 100; // 原 500 或 1000
for (int i = 0; i < list.size(); i++) {
// ... 設置參數
stmt.addBatch();
if (++count % batchSize == 0) {
stmt.executeBatch();
stmt.clearBatch();
}
}
// 剩餘提交
stmt.executeBatch();
stmt.executeLargeBatch() (JDBC 4.2+)conn.setAutoCommit(false) 手動提交事務conn.rollback()