java.sql.SQLException: Index de paramètres hors de portée (2> nombre de paramètres, ce qui est 1)Pourquoi ce code affiche-t-il une exception d'index de paramètre hors plage?
J'ai vérifié toutes les réponses déjà dans ce sujet, mais n'a pas pu trouver la solution pour mon problème. Peu importe les changements que je fais, cela montre l'exception. Mon segment de code:
public void updatetData() {
System.out.println("Enter the id of the record you want to update :");
int updateID = sc.nextInt();
if(checkDuplicateId(updateID)){
sql = "UPDATE student SET name = '?', address = '?', email_address = '?', phone_no = '?' WHERE id = ?" ;
try(Connection con = dbConn.getConnection();
PreparedStatement stmtUpdate = con.prepareStatement(sql);) {
System.out.println("\nEnter the name to update : ");
String name = sc.next();
System.out.println("\nEnter the address to update : ");
String address = sc.next();
System.out.println("\nEnter the email address to update : ");
String email_address = sc.next();
System.out.println("\nEnter the phone no to update : ");
String phone_no = sc.next();
stmtUpdate.setString(1, name);
stmtUpdate.setString(2, address);
stmtUpdate.setString(3, email_address);
stmtUpdate.setString(4, phone_no);
stmtUpdate.setInt(5, updateID);
stmtUpdate.execute();
System.out.println("Updation completed");
} catch (SQLException ex) {
System.out.println("Exception in updateData");
ex.printStackTrace();
}
} else{
System.out.println("ID doesn't exist!!");
}
}
** Le code pour la méthode checkDuplicateId est au-dessous: **
private boolean checkDuplicateId(int id){
boolean checkDup = false;
String sql1 = "SELECT * FROM student WHERE id = ?";
try(Connection con = dbConn.getConnection();
PreparedStatement stmt = con.prepareStatement(sql1);) {
stmt.setInt(1, id);
try(ResultSet rs = stmt.executeQuery();){
if(rs.next())
return !checkDup;
else
return checkDup;
}
} catch (SQLException ex) {
System.out.println("Exception occured in checkduplicate method");
ex.printStackTrace();
return false;
} finally{
}
Supprime les guillemets simples autour des espaces réservés '? '. – Berger