Probleme avec ResultSet
mosis
-
FFabrice -
FFabrice -
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
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
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.
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.
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é.
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é.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
Je vous en prie faites kelk choz
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