关于jdbc No value specifide for parameter 1的错误

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容

img


顺序没错啊为什么会报一个 No value specifide for parameter 1的错误?

我的解答思路和尝试过的方法
我想要达到的结果
        Connection conn = JDBCUtils.getConnections();
    String sql="select id,name,email,birth from customers where id=?";
        PreparedStatement ps = conn.prepareStatement( sql,2);
        ResultSet resultSet = ps.executeQuery();
        if(resultSet.next()){
            int id = resultSet.getInt(1);
            String name = resultSet.getString(2);
            String email = resultSet.getString(3);
            Date birth = resultSet.getDate(4);
            Customer customer = new Customer(id, name, email,birth );
            System.out.println(customer);
        }

尝试下面这段代码:

    Connection conn = JDBCUtils.getConnections();
    String sql="select id,name,email,birth from customers where id=?";
        PreparedStatement ps = null;
        try {
            ps = conn.prepareStatement(sql);
            int id = 2;
            ps.setInt(1,id );
            ResultSet resultSet = ps.executeQuery();
            if(resultSet.next()){
               int id = resultSet.getInt(1);
               String name = resultSet.getString(2);
               String email = resultSet.getString(3);
               Date birth = resultSet.getDate(4);
               Customer customer = new Customer(id, name, email,birth );
               System.out.println(customer);
           }
        } catch (SQLException e) {
            e.printStackTrace();
        }

因为你的SQL有一个占位符select id,name,email,birth from customers where id=?,也就是那个?,你必须将?的值设置为实际的值,这样才是一个正确的SQL。