Bonjour,

J'avance petit à petit dans mon premier micro-développement; une solution trouvée laisse apparaitre de nouveaux problèmes. Celui d'aujourd'hui est l'alimentation d'une combobox avec les valeurs d'une table MySQL.

Jusque là, pas de souci particulier. Le problème se pose lorsque les valeurs dans ma combobox se présente sous cette forme [valeur1, valeur2,...] en une seule et unique ligne. Alors que j'attendais une valeur par ligne.

Voici mon moteur de connexion :


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
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.sql.*;
import java.text.NumberFormat;
import java.text.ParsePosition;
import java.util.ArrayList;
 
public class MoteurConnect {
 
	public ArrayList MaConnec(){		
		// Information d'accès à la base de données
		String url = "jdbc:mysql://localhost/test";
		String login = "root";
		String passwd = "root";
		int compteur=0;
		String test="";
		ArrayList<String> list = new ArrayList<String>();
		Connection cn =null;
		Statement st =null;
		ResultSet rs=null;
 
		try {
 
			// Etape 1 : Chargement du driver
			Class.forName("com.mysql.jdbc.Driver");
 
			// Etape 2 : récupération de la connexion
			cn = DriverManager.getConnection(url, login, passwd);
 
			// Etape 3 : Création d'un statement
			st = cn.createStatement();
 
			String sql = "select nom from data.valeurs";
 
			//				// Etape 4 : exécution requête
			rs = st.executeQuery(sql); 		
 
			// Si récup données alors étapes 5 (parcours Resultset)
 
			while (compteur<5){
					compteur++;
					while (rs.next()) {
					test=(rs.getString("nom"));
					list.add(test);	
					}
			}
 
					//			ResTest = String.valueOf(test);
 
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO: handle exception
			e.printStackTrace();
		} finally {
			try {
			// Etape 6 : libérer ressources de la mémoire.
				cn.close();
				st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return list;
	}
}
Et ci-dessous ma grille (pour la forme) :

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
import java.awt.BorderLayout;
import javax.lang.model.element.Modifier;
import javax.swing.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
 
 
public class Grille extends JApplet {
 
	JTextField champNom = new JTextField(30);
	JTextField champPrénom = new JTextField(30);
	JButton boutonLib1 = new JButton("Nom");
	JButton boutonLib2 = new JButton("Prénom");	
	JButton boutonReset = new JButton("RESET");
	JButton boutonInject = new JButton("INJECT");
	JComboBox ComboNom = new JComboBox() ;
 
	/**
         * @param args
         */
	Grille(){
 
	JPanel contenuFenêtre = new JPanel();
	BorderLayout disposition = new BorderLayout();
 
	contenuFenêtre.setLayout(disposition);
	JPanel panneauChamp = new JPanel();
 
	GridLayout dispositionChamp = new GridLayout(2, 2);
	panneauChamp.setLayout(dispositionChamp);
	panneauChamp.add(boutonLib2);
	panneauChamp.add(champPrénom);
	panneauChamp.add(boutonLib1);
	panneauChamp.add(champNom);
 
	contenuFenêtre.add("North", panneauChamp);
 
	JPanel panneauOP = new JPanel();
	GridLayout dispositionOP = new GridLayout(2, 2);
	panneauOP.setLayout(dispositionOP);
	panneauOP.add(boutonReset);
	panneauOP.add(boutonInject);
	panneauOP.add(ComboNom);
 
    //  valeur liste déroulante : 
 
	MoteurConnect maConnexion = new MoteurConnect();
 
	ComboNom.addItem(maConnexion.MaConnec());
 
	contenuFenêtre.add("South", panneauOP);
 
	//Crée le cadre et lui affecte son contenu
	JFrame frame = new JFrame("Grille");
	frame.setContentPane(contenuFenêtre);
	//Affecte à la fenêtre des dimensions suffisantes pour
	//prendre en compte tous les contrôles
	frame.pack();
	//Affiche la fenêtre
	frame.setVisible(true);	
	//Instancie le récepteur d'événements et l'enregistre
	//auprès de chaque bouton
	MoteurInject moteurInject = new MoteurInject(this);
	MoteurReset moteurReset = new MoteurReset(this);
//
	boutonReset.addActionListener(moteurReset);
	boutonInject.addActionListener(moteurInject);
}
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Grille t = new Grille();
		}
 
 
}
J'espère avoir des éléments de réponses qui me permettront d'avancer.

Merci.