简体   繁体   English

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

[英]Parameter index out of range (3 > number of parameters, which is 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;  
    }  

java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2). java.sql.SQLException:参数索引超出范围(3>参数数量,即2)。 Why is this always the error? 为什么这总是错误? i have counter the ranges of the parameter, but i still get that error. 我已经计算了参数的范围,但仍然收到该错误。

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

You're making PreparedStatement ps2 but your setString s are all on ps ... You need to update those to use ps2 您正在制作PreparedStatement ps2但您的setString都在ps 。您需要对其进行更新以使用ps2

The problem is you have misused the variables ps and ps2 . 问题是您滥用了变量psps2

As you have created a PreparedStatement variable above, you can use it again without creating a new one. 在上面创建了PreparedStatement变量后,您可以再次使用它而无需创建新变量。

ps = con.prepareStatement("insert into patient
(username, password, email, sex,
level, fullname, age, bday, blood, address, vaccines, fam_his, surgery, medicine_taken)
values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 参数索引超出范围(8>参数数量,即7) - Parameter index out of range (8 > number of parameters, which is 7) 参数索引超出范围(4 > 参数个数,即 3) - Parameter index out of range (4 > number of parameters, which is 3) 参数索引超出范围(4 > 参数个数,即 2) - Parameter index out of range (4 > number of parameters, which is 2) 参数索引超出范围(1>参数数量,即0) - Parameter index out of range (1 > number of parameters, which is 0) Java参数索引超出范围(2>参数数量,即1) - Java Parameter Index Out Of Range (2 > number of parameters, which is 1) Java 代码中的错误:参数索引超出范围(1 > 参数数量,为 0) - Error in Java code :Parameter index out of range (1 > number of parameters, which is 0) 参数索引超出范围(1>参数数量,即0)。 怎么解决呢? - Parameter index out of range (1 > number of parameters, which is 0). how to solve it? 参数索引超出范围(1>参数数量,即0),如何避免? - Parameter index out of range (1 > number of parameters, which is 0), how to avoid? 如何解决:“参数索引超出范围(2 > 参数数量,即 1)。” - How to fix: “Parameter index out of range (2 > number of parameters, which is 1).” 参数索引超出范围(1 > 参数数量,即 0)。 Mysql 与 Java - Parameter index out of range (1 > number of parameters, which is 0). Mysql vs Java
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM