java.sql.SQLException: No value specified for parameter 2

一、问题提出

我在模拟实现批处理时出现此问题代码如下:
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;
    }

分析,内循环负责给预编译(预备)语句赋值。如果只有一个参数,不会报错。当有两个参数时,第二个还没有来的及赋值,就执行了语句。所以会出现如题 错误
没有为第二个参数赋值

猜你喜欢

转载自blog.csdn.net/gao_zhennan/article/details/80737759