Bonsoir everyone !

Je bloque sur bout de code, j'arrive pas à comprendre ce qui ne fonctionne pas. Au depart j'avais fait une requête SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT metier.id, mdp, niveaudacces 
FROM metier, identification
WHERE metier.id = identification.id
AND id = ?
AND mdp = ?
;
Mais quand je faisais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
p1.setObject(3, niveaudacces, Types.CHAR)
ça me marquait je sais plus quoi out of range et comme quoi il n'y avait que deux paramètres...

J'ai alors essayé de faire une deuxième requête SQL avec juste la table metier et ne pas faire de jointure sur la première, mais la il ne reconnait qu'un parametre.

Je sais pas pourquoi il veut pas reconnaitre niveaudacces ! J'ai essayé sous forme de String, d'object, j'crois même d'int mais ça marche pas !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package accueil;
 
import Princeton.Infirmiere;
import Princeton.Medecin;
import Princeton.Personnel;
import Princeton.Secretaire;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Types;
 
 
// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.73DF0393-DCCC-AF2E-E8DE-3B4646C531C6]
// </editor-fold> 
public class AccueilLienBD {
 
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.49D0818A-19D7-38D9-CC7A-24A66E69588C]
    // </editor-fold> 
    public AccueilLienBD() {
    }
 
    public Personnel personnel(String id, String mdp) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection db = DriverManager.getConnection(accueil.NewMain.bd, accueil.NewMain.user, accueil.NewMain.mdp);
 
 
 
 
            PreparedStatement p1 = db.prepareStatement("SELECT * FROM identification WHERE id = ? AND mdp = ?;");
            p1.setObject(1, id, Types.VARCHAR);
            p1.setObject(2, mdp, Types.VARCHAR);
            ResultSet result = p1.executeQuery();
 
            String niveaudacces = null;
 
 
            if (result.next() == false) {
                // code pour lancer une fenetre pour dire que il y a une erreur : ce personnel n'existe pas dans la base de donnée
                System.out.println("Bazinga ! Vous n'êtes pas dans la base de donnée, espèce de hacker !");
                db.close();
                return null;
            } else {
                PreparedStatement p2 = db.prepareStatement("SELECT niveaudacces FROM metier WHERE id = ?;");
               p2.setObject(1, niveaudacces);
                ResultSet result2 = p2.executeQuery();
                niveaudacces = result2.getString(1);
                result2.toString();
 
                if (niveaudacces.equals("1")) {
                    // code pour faire un medecin
                    Medecin m = Medecin.recupMedecin(result.getString(1));
                    result.close();
                    db.close();
                    return m;
                }
                if (niveaudacces.equals("2")) {
                    // code pour faire une infirmière
                    Infirmiere i = Infirmiere.recupInfirmiere(result.getString(1));
                    result.close();
                    db.close();
                    return i;
                }
                if (niveaudacces.equals("3")) {
                    // code pour faire une secrétaire
                    Secretaire s = Secretaire.recupSecretaire(result.getString(1));
                    result.close();
                    db.close();
                    return s;
                }
 
            }
//            Medecin m = null;
//
        //           
//            
//            if (result.next() == false) {
//                /** On est dans le cas où l'identifiant ne correspond pas à un médecin 
//                 */
//               
//                // compléter par une requête sql cherchant si c'est une infirmière
//                PreparedStatement p2 = db.prepareStatement("");
//                p2.setObject(1, id, Types.VARCHAR);
//                p2.setObject(2, mdp, Types.VARCHAR);
//                ResultSet result2 = p2.executeQuery();
//
//                Infirmiere i = null;
//                
//                if(result2.next() == false){
//                    /** Nous sommes dans le cas où l'identifiant ne correspond ni à un médecin, ni à une infirmière 
//                     */
//                    PreparedStatement p3 = db.prepareStatement("");
//                    p3.setObject(1, id, Types.VARCHAR);
//                    p3.setObject(2, mdp, Types.VARCHAR);
//                    ResultSet result3 = p3.executeQuery();
//
//                    Secretaire s = null;
//                    
//                    if(result3.next() == false){
//                        /** Nous sommes dans le cas où l'identifiant n'existe pas dans la base de données 
//                         */
//                        db.close();                       
//                        return null;
//                    }
//                    else{
//                        /** Nous avons trouvé une secretaire 
//                         */
//                        s = Secretaire.recupSecretaire(result3.getString("id"));
//                        result.close();
//                        db.close();
//                        return s;
//                    }
//                }
//                else{
//                    /** Nous avons trouvé une infirmière 
//                     */
//                    i = Infirmiere.recupInfirmiere(result2.getString("id"));
//                    result.close();
//                    db.close();
//                    return i;
//                }
//                
//                
//                
//            } else {
//                /** Nous avons trouvé un médecin 
//                 */
//                m = Medecin.recupMedecin(result.getString("id"));
//                result.close();
//                db.close();
//                return m;
//            }
 
        } catch (Exception ex) {
            /** message d'erreur 
             */
            System.out.println(ex.getMessage());
        }
        return null;
 
    }
}
ce qui donne :
init:
deps-jar:
compile:
run:
Illegal operation on empty result set.

ça doit être un truc tout con, mais là je le vois pas