Voila je vous explique mon problème, j'ai une fonction qui me renvoi un PreparedStatement :

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;
	}
>>> 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 : 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;
	}
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
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...