一、问题提出
我在模拟实现批处理时出现此问题代码如下:
public static int batch(Connection connection, String sql, Object[][] params) { try(Connection conn = connection){ PreparedStatement pstat = conn.prepareStatement(sql); for (int i = 0; i < params.length; i++) { for (int j = 0; j < params[i].length; j++) { pstat.setObject(j + 1, params[i][j]); //错误 pstat.executeUpdate(); } //正确 pstat.executeUpdate(); } } catch(SQLException e) { e.printStackTrace(); } return 0; }
分析,内循环负责给预编译(预备)语句赋值。如果只有一个参数,不会报错。当有两个参数时,第二个还没有来的及赋值,就执行了语句。所以会出现如题 错误
没有为第二个参数赋值