Voila je vous explique mon problème, j'ai une fonction qui me renvoi un PreparedStatement :
>>> com.mysql.jdbc.JDBC4PreparedStatement@efd552: SELECT matricule FROM l_sps WHERE matricule = le_bon_matricule AND password = MD5('le_bon_pass');
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 public PreparedStatement getLogin(Integer pMatricule, String pPassword) { PreparedStatement vLogin = null; try { vLogin = mConnection.prepareStatement( "SELECT matricule FROM l_sps " + "WHERE matricule = ? AND password = MD5(?);"); vLogin.setInt(1, pMatricule); vLogin.setString(2, pPassword); } catch (SQLException e) { vLogin = null; e.printStackTrace(); } // Voir trace d'execution suivante System.out.println(vLogin); return vLogin; }
J'ai donc ma fonction qui marche et qui me renvoi ce qu'il faut...
Associée à ceci, j'ai une fonction qui permet de traiter ce PreparedStatement :
et enfin, un appel à cette fonction dans mon IHM :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public Integer login(Integer pMatricule, String pPassword) { try { ResultSet vResult = executeQuery(mRequests.getLogin(pMatricule, pPassword)); if (vResult.getFetchSize() == 0) return null; else return vResult.getInt(1); } catch (SQLException e) { e.printStackTrace(); } return null; }
>>> null
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 private JButton getConnect() { if (mLogin == null) { mLogin = new JButton("Connexion"); mLogin.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String vPass = ""; for (int i = 0; i < mPassword.getPassword().length; i++) vPass += mPassword.getPassword()[i]; // Voir la trace d'execution suivante System.out.println(mIHM.getDB().login( Integer.parseInt(mMatricule.getText()), vPass)); mIHM.restart(); } }); } return mLogin; }
J'en déduit donc que le ResultSet est vide (j'ai fait un affichage de FetchSize et j'ai bien 0)
Le problème c'est que si je récupère la requète contenu dans le PreparedStatement (cf. 1ère trace) et que je l'exécute directement (phpmyadmin par exemple) j'ai bel et bien un résultat...
Partager