[Java] Comment faire retourner une string ?

Fermé
pbaudru - 18 févr. 2010 à 07:45
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 - 3 mars 2010 à 11:06
Bonjour,

Je suis débutant sous JAVA.

J'ai crée 2 class, une avec un JFrame (interface) et une autre avec la connection à la DB (DBcon).

La class interface apelle la class DBcon pour obtenir les données et les affichées dans un JList.

Dans la class où je vais lire les données dans la DB j'ai une String [] que je rempli avec les données trouvées dans la DB (max 15 occurences). A la fin de cette class je fais un RETURN de la String avec les données.

Ma question, comment pouvoir utiliser dans la class interface les données lus dans la class DBcon, ou encore, comment faire passer les données dans la String [] populée dans la class DBcon vers la class interface svp ?

Merci beaucoup !

Pierre.
A voir également:

19 réponses

choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
3 mars 2010 à 11:06
pour récupérer les valeurs de ta liste, tu dois itérer (boucle) ta liste et sortir tes objets un par un. A mon avis
1
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
18 févr. 2010 à 09:53
Salut

Dans ta classe DBCon, tu dois simplement créer une méthode publique du style:

public String getStringFromDB()

cette méthode te renverra ton string.

0
Salut choubaka,

Merci beuacoup pour votre message !

Alors pour une String simple ça marche bien.....ci-dessous l'appel de la méthode.


//gestion PBfiltrer
if (event.getSource() == PBfiltrer) {
String filtre = EFfiltre1.getText();
EFfiltre5.setText(DB.connection(filtre));

}

Dans ce cas ci-dessus j'ai directement accés a la valeur retournée.

Mais j'ai besoin de faire retourner une STRING [] (array) avec plusieurs occurences......pas uniquement une simple string.

Comment faire pour avoir accés aux occurences d'une string [] ?

Peux-je faire ça ?
EFfiltre5.setText(DB.connection(filtre[0]));
EFfiltre5.setText(DB.connection(filtre[1]));
EFfiltre5.setText(DB.connection(filtre[2]));

Merci beaucoup. Pierre.
0
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
18 févr. 2010 à 11:16
c'est tout à fait possible, le seul problème c'est la variable qui va t'indiquer l'occurence.

la méthode de récupération de l'array ne pose pas de problème

public String getStringFromDB()

elle a juste besoin d'un argument à un moment donné

public String getStringFromDB(int i)

return tonString[i];

Dans la valeur de retour, tu récupères le string associé.

Comme je dis plus haut, le plus difficile sera d'indiquer l'occurence via la valeur int en argument
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci encore choubaka :o)

En faite, ce qui serait l'idéale pour moi serait de retourner toute l'array et de pouvoir l'utiliser dans ma classe qui a apellé la classe DB, comment faire ça svp ?

A+ Pierre.
0
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
18 févr. 2010 à 11:37
faire appel à une méthode comme ceci

public String[] getStringFromDB()
0
Salut choubaka,

Merci pour ton message !

Finalement je vais utiliser un ArrayList<> pour retourner mes données.....alors jai fait:

ArrayList <candidats> listret = DB.connection(filtre1);
for (int i=0; i<15; i++){

}

public class DB {

public static ArrayList<candidats> connection(String filtre) {
ArrayList<candidats> liste = new ArrayList<candidats>();
return liste;


Ma question, listret sera populer avec les données de l'arraylist 'candidats' de la class DB ?


Merci beaucoup ! Pierre.
0
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
23 févr. 2010 à 10:54
bonjour

je ne comprends pas très bien ta question...
0
Si j'ai un arraylist populé dans ma class DB, au retour dans la class qui a appelé la class DB l'arraylist retourné peut-être utilisé directement ?

Si oui, comment svp ?

Merci beaucoup !

Pierre.
0
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
23 févr. 2010 à 13:25
public class Interface{

private ArrayList listret;
private candidats currentCandidat;

// lorsque tu fais appel à la méthode statique, il te suffit de faire:

listret = DB.connection(filtre1);

Tu fais une itération dans listret afin de récupérer l'objet que tu veux:

for(int i=0; i<listret.size(); i++) {

currentCandidat = (candidats) listret.elementAt(i);


dans ce cas, tu extrais un par un un objet candidats.

Maintenant, tu peux manipuler ton ArrayList comme tu veux...
Un conseil, vérifie dans une condition If (isEmpty) si ton ArrayList n'est pas vide; ça évite des bugs.


0
Salut choubaka,

Merci beaucoup pour ton aide !

Alors, j'ai une autre question, j'ai un JFrame avec a JList(et un ListModel) où je veux afficher les candidats retournés dans le arraylist.

//LIST for Jframe
private JList lista;
private DefaultListModel listModel;

listModel = new DefaultListModel();
lista = new JList(listModel);
lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
lista.setSelectedIndex(0);
lista.addListSelectionListener(this);
lista.setVisibleRowCount(15);
JScrollPane listScrollPane = new JScrollPane(lista);

filtre.getContentPane().add(lista);
filtre.getContentPane().add(listScrollPane);

Commet faire pour utiliser les occurences de l'arraylist dans le JList svp ?
Peux-je faire ça ?

ArrayList <candidats> listret = DB.connection(filtre1);
for (int i=0; i<listret.size(); i++){
listModel.addElement(((candidats)listret.elementAt(i)));
}

Le problème c'est que j'ai une erreur dans 'elementAt' ou il me dit ça:
The method element(int) is undefined for the type ArrayList<candidats>


Désolé je suis un débutant qui pose des questions très simples....


Merci beaucoup ! Pierre.
0
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
24 févr. 2010 à 10:44
c'est une erreur de ma part

tu dois utiliser la méthode listret.get(i), qui te renvoie un objet.

listModel.addElement(((candidats)listret.get(i)));

maintenant cette méthode te renvoie l'objet candidats mais je ne sais pas ce qui sera affiché dans ta liste...
si tu dois afficher le nom (par exemple), il manque quelque chose. enfin je pense.
0
Merci beaucoup !!!

Par contre j'ai détecté un problème dans ma class DB où je vais lire les données.....

ArrayList<candidats> liste = new ArrayList<candidats>();

.....

candidats occur = null;

while (rs.next()){

String contact = rs.getString("PRENOM")
+ " " + rs.getString("NOM") + " " + rs.getString("mot_cles_1");

occur.nom = rs.getString("NOM");
occur.prenom = rs.getString("PRENOM");
occur.qualif1 = rs.getString("mot_cles_1");

System.out.println(occur);

int i = 0;
liste.add(i, occur);
i++;

System.out.println(contact);

}

Quand je vois le 'PRINTout' après éxecution du programme j'ai NULL pour le print de 'OCCUR' mais j'ai les données pour le print de 'CONTACT'......c'est à dire que je n'arrive pas encore à rajouter les candidats dans l'arraylist 'liste'.

Comment faire alors pour rajouter les occurences dans mon arraylist svp ?

Merci beaucoup !

Pierre.
0
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
24 févr. 2010 à 11:30
essaye ça

candidats occur = null;
String nom;
String prenom;
String motcle1;
String contact;

while (rs.next()){

nom = rs.getString("NOM");
prenom = rs.getString("PRENOM");
motcle1 = rs.getString("mot_cles_1");

contact = nom + " " + prenom + " " + motcle1;

occur.nom = nom;
occur.prenom = prenom;
occur.qualif1 = motcle1;

System.out.println(occur);

liste.add(rs.getRow(), occur);

System.out.println(contact);

}
0
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
24 févr. 2010 à 11:32
pour l'affichage d'occur, tu dois verifier si tu a bien surchargé la méthode toString();
0
Salut choubaka, merci pour ta réponse !

Oui j'ai fait ça :

public class candidats {

static String nom;
static String prenom;
static String qualif1;

public String toString(){
return candidats.nom + "\t" + candidats.prenom + "\t" + candidats.qualif1;
}
}

A+ Pierre.
0
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
2 mars 2010 à 21:14
et?
0
Salut choubaka,

Alors j'ai toujours un résultat different entre mes deux println:

Ici le println dans ma classe DB:
while (rs.next()){

nom = rs.getString("NOM");
prenom = rs.getString("PRENOM");
motcles1 = rs.getString("mot_cles_1");

occur.nom = nom;
occur.prenom = prenom;
occur.qualif1 = motcles1;

System.out.println(occur);
System.out.println(i); // index
i++;

liste.add(i, occur); // est-ce que c'est bon ça ?

Le résultat est bon, c'est à dire:
PIERRE BAUDRU COOLGEN
0
PATRICIA DE SOUZA COOLGEN
1

Ici le println dans ma classe recheureka2:
if (event.getSource() == PBfiltrer) {
String filtre1 = EFfiltre1.getText();
ArrayList <candidats> listret = DB.connection(filtre1);
System.out.println(listret.size()); // ici c'est le 2 dans le résultat
for (int i=0; i<listret.size(); i++){

String contact = listret.get(i).prenom
+ " " + listret.get(i).nom + " " + listret.get(i).qualif1;
listModel.addElement((listret.get(i)));
System.out.println(contact);
System.out.println(i); // ici c'est le 0 et le 2 dans le résultat

2
DE SOUZA PATRICIA COOLGEN
0
DE SOUZA PATRICIA COOLGEN
1

Bon je ne comprends pas encore porquoi j'ai deux occurences differentes quand je suis en train de lire dans la DB et au retour pour le deuxième println j'ai deux iccurences identiques ?

Merci beaucoup pour ton aide !! :o)

A+ Pierre.
0
choubaka Messages postés 39424 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 4 avril 2025 2 104
3 mars 2010 à 10:43
c'est bizarre, en effet ...

essaye en déclarant ton String "contact" en dehors de ta méthode ou de ta condition..
0
Merci choubaka,

J'ai essayé mais j'ai le même résultat....

Comment faire pour un println des valeurs de l'arraylist dans ma classe DB svp (voir comm svp) ?

nom = rs.getString("NOM");
prenom = rs.getString("PRENOM");
motcles1 = rs.getString("mot_cles_1");

String contact = prenom + " " + nom + " " + motcles1;

occur.nom = nom;
occur.prenom = prenom;
occur.qualif1 = motcles1;

System.out.println(occur);

liste.add(i, occur);
System.out.println(liste.????); // ici on peut récupérer la valeur dans l'array ?
System.out.println(i);
i++;
0