Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 参数索引超出范围(3>参数数量,即2)_Java_Jdbc_Sqlexception - Fatal编程技术网

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

Java 参数索引超出范围(3>参数数量,即2),java,jdbc,sqlexception,Java,Jdbc,Sqlexception,java.sql.SQLException:参数索引超出范围3>参数数,即2。为什么这总是错误?我有计数器的参数范围,但我仍然得到错误 public static int updateApproved(admin u){ int status=0; try{ Connection con=getConnection(); PreparedStatement ps=con.prepareStat

java.sql.SQLException:参数索引超出范围3>参数数,即2。为什么这总是错误?我有计数器的参数范围,但我仍然得到错误

    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;  
    }  

您正在准备ps2报表,但您的设置字符串都在ps2上。。。要使用ps2,您需要更新这些变量。问题是您误用了变量ps和ps2

由于您已经在上面创建了PreparedStatement变量,因此可以在不创建新变量的情况下再次使用它

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

请仔细阅读您的代码,ps!=ps2…谢谢你,非常感谢我们还是学生1个月系统T\T哈哈哈非常感谢你,它成功了^_^
ps = con.prepareStatement("insert into patient
(username, password, email, sex,
level, fullname, age, bday, blood, address, vaccines, fam_his, surgery, medicine_taken)
values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");