一、问题提出
我在模拟实现批处理时出现此问题代码如下:
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;
}
分析,内循环负责给预编译(预备)语句赋值。如果只有一个参数,不会报错。当有两个参数时,第二个还没有来的及赋值,就执行了语句。所以会出现如题 错误
没有为第二个参数赋值