java - 参数索引超出范围(3 > 参数数量,即 2)

标签 java jdbc sqlexception

    public static int updateApproved(admin u){  
        int status=0;  
        try{  
            Connection con=getConnection();  
            PreparedStatement ps=con.prepareStatement("update admission set status=? where admiss_id=?");  

            ps.setString(1,u.getStatus());
            ps.setInt(2,u.getAdmiss_id());  


            status=ps.executeUpdate();

            PreparedStatement ps2=con.prepareStatement("insert into patient(username,password,email,sex,level,fullname,age,bday,blood,address,vaccines,fam_his,surgery,medicine_taken) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)");  
            ps.setString(1,u.getUsername());  
            ps.setString(2,u.getPassword());  
            ps.setString(3,u.getEmail());  
            ps.setString(4,u.getSex());  
            ps.setInt(5,u.getLevel());
            ps.setString(6,u.getFullname());
            ps.setInt(7,u.getAge());
            ps.setString(8,u.getBday());
            ps.setString(9,u.getAddress());
            ps.setString(10,u.getBlood());
            ps.setString(11,u.getVaccines());
            ps.setString(12,u.getFam_his());
            ps.setString(13,u.getSurgery());
            ps.setString(14,u.getMedicine_taken());
            status=ps2.executeUpdate();
        }catch(Exception e){System.out.println(e);}  
        return status;  
    }  

java.sql.SQLException:参数索引超出范围(3 > 参数数量,即 2)。为什么总是这个错误?我已经计算了参数的范围,但仍然收到该错误。

最佳答案

PreparedStatement ps2=con.prepareStatement("insert into patient(username,password,email,sex,level,fullname,age,bday,blood,address,vaccines,fam_his,surgery,medicine_taken) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)");  
ps.setString(1,u.getUsername());  // ps has this
ps.setString(2,u.getPassword());  // ps has this
ps.setString(3,u.getEmail());  // ps does not have this, it only has 2 ?'s in it, so it explodes

您正在制作 PreparedStatement ps2,但您的 setString 都在 ps 上...您需要更新它们才能使用 ps2

关于java - 参数索引超出范围(3 > 参数数量,即 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49054847/

相关文章:

java - 如何在不使用 this 的情况下在接口(interface)默认方法内进行同步?

java - 交易问题

java - AsyncTask 不会改变其他变量的值

java - 使用 JDBC 从 MySQL 数据库中提取数据时如何避免丢失标点符号?

java - [Microsoft][ODBC 驱动程序管理器] 无效字符串或缓冲区长度异常

java - 无法正确地将 std::pair 暴露给 java 绑定(bind)?

java - 如何使用apache poi获取子图形的绝对位置

java - 将自定义对象从 applet 传递到 servlet

java.sql.SQLException : Access denied for user 'xx@xx.xx' (using password: YES) appearing 2 years after installation 异常

java - 异常和 SQLException 之间的区别