Probleme avec ResultSet

Bonjour,

j'ai l'erreur suivante lors de l'exexution "GRAVE: java.sql.SQLException: Ensemble de résultats épuisé" .
Je travaille sur une apllication web jsp et servlet sous netbeans.

voila le bout de code

public client rechercher_client(String libelle){
    client cl=new client();
    class_db db=new class_db();
    try {             
        db.connection();//connexion a la base de donnees        ncli ='%"+libelle+"%' or nd like'%"+libelle+"' or%
    //    String req="select * from RECO.CLIENT where CLIENT.nom like '%"+libelle+"%' and rownum<2" ;
      
        String sql="select  'ncli','ndos','nd','lprod','lart','nbterm','nom','prenom1','datms_ld','datdeb_ld','groupe_fact','ctarif',"+
        "'ltarif,mnt_abo','lcat','lprof','lgest','code_portefeuille','nvoie','adresse1','adresse2','adresse3','compl_adr','contact','mnt_ht_fact' from client where nom like '%"+libelle+"%' and rownum<2" ;
        System.out.println(sql);
        ResultSet res=db.ExcecutSelect(sql);// execution et remplissage du resultset
        System.out.println(res.next());
        if (res.next())
        {
            //ajouter les donnees a l'objet client
       cl.setNcli(res.getString("ncli"));
        cl.setNdos(res.getString("ndos"));
        cl.setNd(res.getString("nd"));
        cl.setLprod(res.getString("lprod"));
        cl.setLart(res.getString("lart"));
        cl.setNbterm(res.getString("nbterm"));
        cl.setNom(res.getString("nom"));
        cl.setPrenom(res.getString("prenom1"));
        cl.setDatems_ld(res.getString("datms_ld"));
        cl.setDatedeb_ld(res.getString("datdeb_ld"));
        cl.setGroupe_fact(res.getString("groupe_fact"));
        cl.setCtarif(res.getString("ctarif"));
        cl.setLtarif(res.getString("ltarif"));
        cl.setMnt_abo(res.getString("mnt_abo"));
        cl.setLcat(res.getString("lcat"));
        cl.setLprof(res.getString("lprof"));
        cl.setLgest(res.getString("lgest"));
        cl.setCode_portf(res.getString("code_portefeuille"));
        cl.setNvoie(res.getString("nvoie"));
        cl.setAdresse1(res.getString("adresse1"));
        cl.setAdresse2(res.getString("adresse2"));
        cl.setAdresse3(res.getString("adresse3"));
        cl.setComp_adr(res.getString("compl_adr"));
        cl.setContact(res.getString("contact"));
        cl.setMnt_ht_fact(res.getString("mnt_ht_fact"));
        }
        res.close();      
        System.out.println("nom: "+res.getString("ndos"));
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
    db.fermerconnexion();
    return cl;
}

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. prends mon msn envoie moi ton code et je te résous ton problème.
    ray_fab@hotmail.fr
    1. Les ligne INFO provienne de l'affichage System.out.println()

      INFO: connexion etablie
      INFO: select * from client where nom like '%DIENG%' //affichage requete
      INFO: Requete executee correctement
      INFO: true // resultSet
      INFO: nom: DIENG //rs.getString("nom");

      Voici la nouvelle exeption
      GRAVE: java.sql.SQLException: Nom de colonne non valide
              at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
              at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
              at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:226)
              at oracle.jdbc.driver.OracleStatement.get_column_index(OracleStatement.java:3098)
              at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1853)
              at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1558)
              at sonatel.client.rechercher_client(client.java:433)
              at org.apache.jsp.resultat_005frecherche_jsp._jspService(resultat_005frecherche_jsp.java from :76)
              at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
              at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:406)
              at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:483)


      Je vous en prie faites kelk choz
      1. salut
        merci
        J'ai fais un print(rs.next) ca me retourne true.
        Si tu vois bien FFabrice ma requete retourne une seule ligne c'est pour cela que j'ai utilisé if .mais je vais tester avec while et utiliser un ResultSetMetaData.

        Je vous tiens au courant
        1. Salut déjà pourquoi tu fais un if(res.next())...ca veux dire que qu'il test juste si le resultSet contient un élément suivant ce que tu dois faire c'est plûtot un while(res.next()) un if test qu'une seule fois alors qu'un while c'est une boucle.
          Et avec le code que tu as je te conseil d'utiliser un ResultSetMetaData il te permettra d'recuperer le resultat dans un vector et c'est plus souple à gerer.
          PS:Fais pas res.next() en dehors de la boucle il fermera la base de données avant que tu y entres.
          1. Modérateur
            essaye de faire un "print" de ce qui ressort de ton rs.
            ça permettra de voir ce qui en ressort...
            1. res.next() me retourne true donc le resultset prend le resultat de la requete qui me retourne une seule ligne .
              Le souci est que je n'arrive pas a mettre ca dans l'objet client .
              Il semble que le resultset se vide aussitot apres.

              Je suis en stage et l'application doit etre déployé dans le réseau dès demain.
              Au secour aidez moi a trouver la solution
              1. c'est ce que je t'ai dit t'as fait un if au lieu d'un while ou un do donc il entre une seule fois et ressort en fermant ta base de données d'où ta seule ligne et ton exception fait comme je t'ai dit plus haut
            2. Modérateur
              res.next() renvoie bien un booléen mais je ne crois pas que la fait de l'utiliser comme condition soit judicieux.

              Cette méthode sert à bouger le curseur d'une ligne. On l'utilise surtout dans une boucle "While"

              Je ne sais pas le tester, mais c'est une possibilité.

              Discussions similaires

              probleme avec ResultSet

              9 réponses