IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Récupération ResultSet dans liste<objet>


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Par défaut Récupération ResultSet dans liste<objet>
    Bonjour tout le monde;
    J'utilise JDBC excel pour avoir les éléments dans la base (base excel). J'ai réussi à avoir les éléments de la colonne, sans problème. Maintenant, je voudrais avoir le résultat afficher dans console d'éclipse, pour cela j'ai créer une liste d'objet puis j'ai affecté le "Resultset" dedans, j'ai ensuite testé et c'est là le problème. Je vais vous montrer un extrait de code afin que vous puissiez comprendre mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public static int testeExtraction() {
    .....
     ResultSet rs = s.executeQuery("SELECT * FROM [Liste Base DSCI ANALAKELY$]");
    while (rs.next()){
    	            System.out.println(rs.getString("NOMCLIENT"));
    	            System.out.println(">>>>> while nom client");
    				listclient.add(new Client(rs.getString("NOMCLIENT")));
                nb ++
                        }
    .......
            return nb;
    }
    cela affiche les noms des clients dans le console et le nombre de ligne dans l'interface.

    J'ai donc continuer, j'ai modifié comme suit:
    ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    while (rs.next()){
     
    				listclient.add(new Client(rs.getString("NOMCLIENT")));
     
    				nb ++;
    	        }
     
    	        Iterator<Client> li = listclient.iterator();
    	        while (li.hasNext()){
    	        	Client client2 =li.next();
    	        	System.out.println(">>>>>lir: "+client2);
    	        }
    et le résultat dans le console d'eclipse est :
    >>>>>lir: com.telma.dao.Client@9ff1d3
    >>>>>lir: com.telma.dao.Client@bd76d7
    >>>>>lir: com.telma.dao.Client@c54edf
    >>>>>lir: com.telma.dao.Client@1bd2e90
    >>>>>lir: com.telma.dao.Client@13c1ae3
    >>>>>lir: com.telma.dao.Client@109423b
    >>>>>lir: com.telma.dao.Client@db4489
    >>>>>lir: com.telma.dao.Client@1708e32
    >>>>>lir: com.telma.dao.Client@879c56
    ...........

    cela n'affiche que le nom du package de la classe Client et ces lettres et chiffres après le "@". Je ne comprend pas d'où vient ce problème. Avez vous déjà rencontré ce genre de problème? Aidez-moi svp, ça fait déjà 2 jours que je me suis coincée là;

    Merci beaucoup, à plus

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Bah, oui, System.out.println(objet) fait appel à la méthode toString() de l'instance référencé par objet pour déterminer ce qui doit être affiché au final. Et l'implémentation par défaut de toString(), dans la classe Object de Java, affiche ce que tu vois. Pour avoir autre chose, il faut implémenter la méthode toString() dans la classe Client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Client {
     
       ...
     
       public String toString() {
            return ... // ce que tu veux voir afficher ...  par exemple return nom; si l'attribut de ta classe Client s'appelle comme ça (et qu'il est bien de type String, évidemment)...
       }
     
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Par défaut toString java
    Resalut,

    Merci bcp pour la réponse, j'ai alors modifié le type de la méthode en toString, et pour l'affichage j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public String toString() {
    Iterator<Client> li = listclient.iterator();
     
    	        while (li.hasNext()){
    	        	Client client2 =li.next();
    	        	System.out.println(">>>>>lir: "+client2.toString());
    	        }
    .......
    return ret; // variable de type String
     }
    Puis dans ma JSP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <% 
    Essai ext = new Essai();  //Classe de l'extrait de code ci-dessus
    out.println(ext);
    %>
    Pour le résultat, rien (une page blanche) dans l'interface et le même résultat dans le console:
    >>>>>lir: com.telma.dao.Client@1266fce
    >>>>>lir: com.telma.dao.Client@7659ab
    >>>>>lir: com.telma.dao.Client@1f9088f
    >>>>>lir: com.telma.dao.Client@a124e5
    >>>>>lir: com.telma.dao.Client@17d6c0d
    ...............

    ......

    Pourriez vous me l'expliquer svp, j'en ai aucune idée,
    Merci

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    C'est ta classe Client qui doit implémenter la méthode toString() qui va bien...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    C'est la méthode toString() de la classe Client qui faut implémenter, pour qu'elle retourne la valeur que tu veux afficher pour un client.

    Ensuite, pour ta classe Essai, si tu veux aussi pouvoir faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Essai essai = new Essai();
    System.out.println(essai);
    et que ça t'affiche la liste de client (sous entendu la liste des résultat des toString() de chaque client de la liste), il faut faire pareil : redéfinir la méthode toString() de Essai, pour qu'ele génère une String qui représente cette liste.

    Dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public String toString() {
    Iterator<Client> li = listclient.iterator();
     
    	        while (li.hasNext()){
    	        	Client client2 =li.next();
    	        	System.out.println(">>>>>lir: "+client2.toString());
    	        }
    .......
    return ret; // variable de type String
     }
    ça affiche les résultats de toString() de chaque client, les uns en dessous des autres, dans la console, et après ça fait un return d'une variable ret qui sort d'on ne sait où...

    Pour générer une String qui représente une liste, on fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public String toString() {
       StringBuilder stringBuilder = new StringBuilder();
       boolean first = true;
       for(Client client : listclient) {
          if( first ) first = false; else stringBuilder.append(", ");
          stringBuilder.append(client);
       }
       return stringBuilder.toString();
    }
    En Java 8, on peut faire aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public String toString() {
    return listclient.stream()
              .map(Object::toString)
              .collect(Collectors.joining(", "));
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Par défaut toString java
    Youpiiiiiiiiiiii, C'est bon, ça fonctionne, la liste s'affiche;

    Merci bien,

    A plus

  7. #7
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Par défaut servlet/ ResultSet java
    Bonjour à tous

    Suite à ce que j'ai fais hier, je crée un tableau qui contiendra les éléments de la liste que j'ai créé hier. Après récupération de la resultset dans une liste, je voudrai maintenant le récupérer dans un servlet pour que je puisse utiliser la méthode doGet (GET); j'ai donc réutilisé la même fonction d'hier, je l'ai modifié en servlet, comm suit l'extrait de code:

    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
    public class GetSite extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setContentType("text/html");
    		PrintWriter out = response.getWriter();
    		String action = request.getServletPath();
    		Connection con = null;
    		Statement stm = null;
    		ResultSet rs = null;
    		RequestDispatcher reqdis = null;
    		List<Client> listclient = new ArrayList<Client>();
    		int nb =0;
    		StringBuilder stringbuilder = new StringBuilder();
    		boolean first = true;
     
    		try {
    	        con = DriverManager.getConnection(
    	                "jdbc:odbc:" +
    	                "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" +
    	                "DBQ=D:\\doc_agrico\\temp\\Liste Base-data-DSCI.xlsx;" +
    	                "ReadOnly=0;");
     
     
    	        stm = con.createStatement();
    	        rs = stm.executeQuery("SELECT * FROM [Liste Base DSCI ANALAKELY$]");
    	        out.println("NOMCLIENT");
     
    	        while (rs.next()){
     
    				listclient.add(new Client(rs.getString("NOMCLIENT")));
    				nb ++;
    	        }
    	        for(Client client : listclient){
    	        	if(first) first = false;
    	        	else stringbuilder.append(", ");
    	        	stringbuilder.append(client);
     
    	        }
    		}catch (SQLException ex) {
    	        ex.printStackTrace();
    	    }
     
    	}
    puis dans webxml
    j'ai rajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <servlet>
      <servlet-name>GetSite</servlet-name>
      <servlet-class>GetSite</servlet-class>
      </servlet>
      <servlet-mapping>
      <servlet-name>GetSite</servlet-name>
      <url-pattern>/GetSite</url-pattern>
      </servlet-mapping>
    </web-app>
    mon problème c'est comment l'appeler dans ma jsp, je n'ai aucune idée même en regardant le net.
    Comme c'est un servlet, j'ai tout de suite appelé sur l'url: http://localhost:8085/Tmp/GetSite et c'est une erreur
    J'ai besoin d'aide svp;

    Merci

    }

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Si je te comprends bien, tu appelles ta servlet et tu voudrais que le résultat soit afficher dans ton navigateur en retour ?
    Si oui, tu as plusieurs façon de faire, la plus simple pour le moment serait d'écrire directement dans le flux de retour
    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
     
    package test.servlet;
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    @WebServlet(name="TestServlet", urlPatterns="/testServlet")
    public class TestServlet extends HttpServlet
    {
        private static final long serialVersionUID = 1;
     
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
            StringBuilder sb = new StringBuilder();
            sb.append("élément 1").append("<br>");
            sb.append("élément 2").append("<br>");
            sb.append("élément 3").append("<br>");
            sb.append("élément 4").append("<br>");
            sb.append("élément 5").append("<br>");
            sb.append("<hr>");
     
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.write(sb.toString());
            out.close();
        }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/05/2011, 10h00
  2. problème de récupération d'une liste d'objet au niveau des DAO
    Par yness dans le forum Persistance des données
    Réponses: 1
    Dernier message: 25/04/2011, 19h57
  3. Modifier un objet dans list d 'objets
    Par topolino dans le forum ASP.NET
    Réponses: 3
    Dernier message: 31/08/2009, 12h27
  4. Récupération choix dans liste déroulante
    Par SAMTHEDOG dans le forum VBA Word
    Réponses: 1
    Dernier message: 13/07/2007, 13h44
  5. récupération valeur dans liste déroulante
    Par kumo dans le forum Modélisation
    Réponses: 9
    Dernier message: 26/05/2007, 18h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo