Problème ArrayList .size() et .add() [Résolu]

Signaler
Messages postés
17
Date d'inscription
mercredi 11 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012
-
Messages postés
17
Date d'inscription
mercredi 11 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012
-
Bonjour, dans le cadre d'un projet de développement, je dois récupérer dans une interface des informations que je dois stocker dans une base de données. Un premier JButton permet d'ajouter un élément sélectionné et de le stocker dans une ArrayList tandis que le second créer la chaine de caractère qui sera envoyée à la base de donnée. Cependant, en testant, j'ai l'impression que mon ArrayList n'a pas la bonne taille lorsque j'ajoute un élément (Par exemple j'entre deux éléments et la taille retournée reste à 1 ou 0 ...) Peut être le problème se situe-t-il au niveau du if ? ... je désespère^^

Voilà donc le code de la partie concernée

class MyListenerterminer implements ActionListener{

public void actionPerformed(ActionEvent event1){
ArrayList<String> compass2=new ArrayList<String>();
if((JButton)event1.getSource() == ajouter){
String compass=(refc.getSelectedItem().toString()+"-"+grpcompc.getSelectedItem().toString()+"-"+compc.getSelectedItem().toString()+", ");
compass2.add(compass);
JOptionPane.showMessageDialog(null,"Element : "+compass2.size()+" "+compass);
}

if((JButton)event1.getSource() == terminer){
StringBuilder sb=new StringBuilder();
for(int i = 0 ; i < compass2.size(); i++){
String s=compass2.get(i);
//JOptionPane.showMessageDialog(null,"nombre d'éléments : "+compass2.size()+" Chaine : "+s);
sb.append(s);
}

String compass3=sb.toString();
JOptionPane.showMessageDialog(null,"Exception: " +compass3);
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/gestion_costebelle";
String user = "root";
String passwd = "";

Connection conn = DriverManager.getConnection(url, user, passwd);
Statement st1 = conn.createStatement();
String query1 ="";
int nb = st1.executeUpdate(query1);
}
catch (Exception e0) {
JOptionPane.showMessageDialog(null,"Exception: " +e0.getMessage());
}
}

}
}

Merci en tout cas pour votre aide.

Cordialement =)

4 réponses

Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
10
Salut,

Comme ça, je pense avoir une piste...

en fait, à chaque fois que tu cliques sur l'un de tes boutons, il va créer une arrayList et l'utiliser pour cet évènement... Donc si tu dois cliquer sur un bouton pour ajouter et sur un autre bouton pour envoyer à la DB, chaque click sur un bouton aura sa propre liste...

je te conseille de mettre ta variable compass2 en variable d'instance de ta classe MyListenerTerminer...
Messages postés
17
Date d'inscription
mercredi 11 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012

Ah et petite précision, les petites fenêtres que j'ouvre ne sont là que pour m'aider à savoir d'où venait le problème ... Donc ne pas s'étonner si elles ont l'air d'avoir des contenus étranges ^^
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
Salut

public void actionPerformed(ActionEvent event1){ 
ArrayList<String> compass2=new ArrayList<String>(); 
....


Je rejoint le poste précédent...
Et j'ajouterai même que à chaque fois que tu clique tu "efface" le clique précédent...

J'en profite juste pour "glisser" un ou deux conseil :

Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/gestion_costebelle";
String user = "root";
String passwd = "";

Connection conn = DriverManager.getConnection(url, user, passwd);
Statement st1 = conn.createStatement(); 


Toute cette partie la n'as rien à faire ici ...
Fait toi une classe de spécifique pour la connexion, avec la récupération de la connexion et l'exécution des requêtes.
Si jamais tu as besoin d'utiliser cette connexion dans une autre classe au moins tu ne dupliquera pas de code, et si tu doit modifié un paramètre, au moins tu ne le fait qu'as un seul endroit.



Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
Messages postés
17
Date d'inscription
mercredi 11 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012

Merci, j'ai trouvé, en fait il s'agissait bien de passage en variable d'instance.
Ps : Lyle 56 Tu as complètement raison, mais la connexion changera par la suite du développement du programme selon la fenêtre donc c'est encore là pour béta dirons nous^^
merci quand même de ton conseil.