Condition "if"
Fermé
natasha82
Messages postés
55
Date d'inscription
vendredi 20 mars 2015
Statut
Membre
Dernière intervention
9 juin 2015
-
Modifié par KX le 11/04/2015 à 20:16
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 11 avril 2015 à 20:52
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 11 avril 2015 à 20:52
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
11 avril 2015 à 20:52
11 avril 2015 à 20:52
Bonjour,
Désolé je t'ai oublié sur l'autre discussion :-(
Ça veut dire que tu acceptes l'étudiant dès que ta requêtes SQL renvoie au moins un résultat, peu importe le contenu du résultat...
Ce serait intéressant d'afficher le résultat de la requête au moment où tu acceptes l'étudiant pour voir ce qu'elle contient réellement, et voir pourquoi elle contient des résultats alors que tu t'attendrais à ce qu'il n'y en ait pas.
Désolé je t'ai oublié sur l'autre discussion :-(
return rs.next();c'est un peu faible comme condition d'acceptation.
Ça veut dire que tu acceptes l'étudiant dès que ta requêtes SQL renvoie au moins un résultat, peu importe le contenu du résultat...
Ce serait intéressant d'afficher le résultat de la requête au moment où tu acceptes l'étudiant pour voir ce qu'elle contient réellement, et voir pourquoi elle contient des résultats alors que tu t'attendrais à ce qu'il n'y en ait pas.
public static List<Map<String,Object>> readAllRows(ResultSet rs) throws SQLException { List<Map<String,Object>> rows = new ArrayList<Map<String,Object>>(); ResultSetMetaData meta = rs.getMetaData(); while (rs.next()) { Map<String,Object> row = new LinkedHashMap<String,Object>(); for (int i=1; i<=meta.getColumnCount(); i++) { String column = meta.getColumnName(i); row.put(column, rs.getObject(column)); } rows.add(row); } return rows; } // la méthode ne dépend d'aucun état, elle devrait donc être static public static boolean nomEtuExist(String nom_etu) throws SQLException { // inutile : doit être fait une seule fois dans tout le programme, pas à chaque requête // Class.forName("com.mysql.jdbc.Driver"); // il vaudrait mieux faire des constantes ou mieux des fichiers .properties pour stocker les données de connexions Connection cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/bdd","root",""); // Attention à l'injection SQL, il vaut mieux faire un PreparedStatement qu'une concaténation de String avec le paramètre dedans PreparedStatement stmt = cn.prepareStatement("SELECT * FROM etudiant WHERE NOM_ETU = ?"); stmt.setString(1, nom_etu); ResultSet rs = stmt.executeQuery(); // Affichage des résultats de la requête List<Map<String,Object>> rows = readAllRows(rs); System.out.println("nomEtuExist("+nom_etu+")="+rows); // ne pas oublier de fermer tes connexions à la base de données rs.close(); stmt.close(); cn.close(); return !rows.isEmpty(); }