首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java JDBC 批量插入 ArrayIndexOutOfBoundsException 原因:Oracle 批處理參數總數限制

     編輯:程式設計疑難解答

錯誤現象

批量插入 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();

最佳實踐

  • 批次大小設為 50-200,平衡性能與穩定性
  • 使用 stmt.executeLargeBatch() (JDBC 4.2+)
  • 關閉自動提交 conn.setAutoCommit(false) 手動提交事務
  • 異常時回滾 conn.rollback()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved