PreparedStatement/ResultSet qui "foire"
Voila je vous explique mon problème, j'ai une fonction qui me renvoi un PreparedStatement :
Code:
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;
} |
>>> com.mysql.jdbc.JDBC4PreparedStatement@efd552: SELECT matricule FROM l_sps WHERE matricule = le_bon_matricule AND password = MD5('le_bon_pass');
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 :
Code:
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;
} |
et enfin, un appel à cette fonction dans mon IHM :
Code:
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;
} |
>>> null
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...