You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDBC executeBatch()无更新时是否应返回与原批次长度一致的数组?

JDBC批量更新返回全0数组的问题解答

这是完全正确的行为,你的代码没有任何操作错误。

原因说明

  • 按照JDBC的规范,executeBatch()返回的数组长度必须和你添加到批次中的SQL语句数量一致。每条UPDATE语句不管有没有找到匹配的记录进行修改,都会对应一个返回值:没匹配到记录就返回0,有多少条被修改就返回对应的数字。
  • SQL Server的JDBC驱动严格遵循了这个规范,所以当你提交500条没有匹配id的UPDATE语句时,返回的数组就会是500个0,而不是你预期的空数组。

可选优化

如果需要区分“没有要执行的语句”和“执行了但没匹配到记录”的情况,可以在执行批量操作前先判断列表是否为空:

if (!list.isEmpty()) {
    int[] affectedRecords = preparedStatement.executeBatch();
    // 处理结果
} else {
    // 列表为空时的逻辑,比如直接返回空数组
}

内容的提问来源于stack exchange,提问作者CoderJammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:30:43