Bonjour,

Débutant en Java en train de développer une petite appli je me trouve confronté au problème suivant et j'espère pouvoir bénéficier de vos lumières...

C'est un petit programme de paris sportifs ...

BD MySQL, 2 tables :
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
 
mysql> desc tmpari;
+---------------+------------+------+-----+---------+
| Field               | Type         | Null    | Key | Default   |
+---------------+------------+------+-----+---------+
| id_pari            | int(11)       | NO    | PRI  |              |
 
| id_equipe1       | int(11)       | YES  |        | NULL      |
| id_equipe2       | int(11)       | YES  |        | NULL      |
| score_gagnant | int(11)       | YES  |        | NULL      |
| score_perdant  | int(11)       | YES  |        | NULL      |
| resultat_pari     | tinyint(1)   | YES  |        | NULL      |
+---------------+------------+------+-----+---------+
6 rows in set (0.00 sec)
 
mysql> desc tmequipe;
+---------------+--------------+------+-----+---------+
| Field               | Type            | Null    | Key | Default   |
+---------------+--------------+------+-----+---------+
| id_equipe         | int(11)          | NO   | PRI   |            |
| nom_equipe      | varchar(50)   | YES  |        | NULL     |
| classement       | int(11)         | YES   |       | NULL      |
+---------------+--------------+------+-----+---------+
3 rows in set (0.00 sec)
Je souhaite donc récupérer pour chaque pari le nom des équipes. Pour cela j'utilise la requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
mysql> select tmpari.id_pari, tmpari.id_equipe1, equipe1.nom_equipe, tmpari.id_equipe2, equipe2.nom_equipe from tmpari
    -> left join TMequipe as Equipe1 on Equipe1.id_equipe = TMPari.id_equipe1
    -> left join TMEquipe as Equipe2 on Equipe2.id_equipe = TMPari.id_equipe2;
+---------+------------+------------+------------+------------+
| id_pari    | id_equipe1  | nom_equipe | id_equipe2 | nom_equipe |
+---------+------------+------------+------------+------------+
|       1     |          1     | Marseille     |          2      | PSG           |
|       2     |          1     | Marseille     |          2      | PSG           |
|       3     |          1     | Marseille     |          3      | Lyon          |
|       4     |          2     | PSG           |          3      | Lyon          |
+---------+------------+------------+------------+------------+
4 rows in set (0.01 sec)
Là ça fonctionne correctement ...

Maintenant la même chose en Java :
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
 
import java.io.*;
import java.sql.*;
 
public class Nouveau2 {
	public static void main(String[] args) {
		try {
			AccesDB accesDB = new AccesDB("jdbc:mysql://localhost:3306/TMParis", "root", "");
			String requete = "select tmpari.id_pari, tmpari.id_equipe1, equipe1.nom_equipe, tmpari.id_equipe2, equipe2.nom_equipe from tmpari ";
			requete += "left join TMequipe as Equipe1 on Equipe1.id_equipe = TMPari.id_equipe1 ";
			requete += "left join TMEquipe as Equipe2 on Equipe2.id_equipe = TMPari.id_equipe2;";
 
			System.out.println(requete);
 
			ResultSet rs = accesDB.getAccesStatement().executeQuery(requete);
 
			if (rs.next()) {
				ResultSetMetaData meta = rs.getMetaData();
				int nbColonnes =  meta.getColumnCount();
				int cpt = 0;
				while (rs.next()) {
					cpt++;
					System.out.println("Pari : " + cpt);
					for (int j = 1; j <= nbColonnes; j++) {
						if ( meta.getColumnTypeName(j) == "INT" ) {
							System.out.print(meta.getColumnLabel(j) + " ==> " + rs.getInt(meta.getColumnLabel(j)) + "  -  ");
						} else if ( meta.getColumnTypeName(j) == "VARCHAR" ) {
							System.out.print(meta.getColumnLabel(j) + " ==> " + rs.getString(meta.getColumnLabel(j)) + "  -  ");
						}
					}
					System.out.println("");
				}
			}
			accesDB.closeAccesDB();
		} catch ( SQLException e ) {
			e.printStackTrace();
		}
	}
}
Et j'obtiens le résultat suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
c:\Java>javac Nouveau2.java
 
c:\Java>java Nouveau2
select tmpari.id_pari, tmpari.id_equipe1, equipe1.nom_equipe, tmpari.id_equipe2, equipe2.nom_equipe from tmpari left join TMequipe as Equipe1 on Equipe1.id_equipe = TMPari.id_equipe1 left join TMEquipe as Equipe2 on Equipe2.id_equipe = TMPari.id_equipe2;
 
Pari : 1
id_pari ==> 2  -  id_equipe1 ==> 1  -  nom_equipe ==> Marseille  -  id_equipe2 ==> 2  -  nom_equipe ==> Marseille  -
Pari : 2
id_pari ==> 3  -  id_equipe1 ==> 1  -  nom_equipe ==> Marseille  -  id_equipe2 ==> 3  -  nom_equipe ==> Marseille  -
Pari : 3
id_pari ==> 4  -  id_equipe1 ==> 2  -  nom_equipe ==> PSG  -  id_equipe2 ==> 3  -  nom_equipe ==> PSG  -
 
c:\Java>
La requête renvoie toujours les premiers enregistrements récupérés dans la table TMEquipe.

Auriez-vous éventuellement une idée ? Un début de piste ? ...
Sur le comportement que je trouve étrange ...


Par avance, Merci
The_mechant