Erreur ODBC en java

aaaaaaaaaaaaaaa -  
 francis -
Bonjour,
lors de l'éxeution du programme j'ai eu l'erreur :" ResultSet is closed "
et j'ai pas trouvé la solution
pouvez vous m'aider en mdisant les types d'erreur qui géner ce message
A voir également:

9 réponses

francis
 
Salut,
ça veut dire que ta fermé ton resultset avec la fin des traitements...
exemple de code qui marche :

String requete = "Select * from "+$CLIENT+" order by client;";
Connection c = getConnection();
Statement stmt = c.createStatement();
ResultSet rs = stmt.executeQuery(requete);
while(rs.next()) {
String cl = rs.getString("client");
String adr = rs.getString("adresse");
}
rs.close();
stmt.close();
closeConnection(c);
}
catch (SQLException e){
System.out.println("Ici");
System.out.println(e);
}
0
aaaaaaaaaaaaaaa
 
jé tt fé , mé toujours la mém erreur
voici la partie de géstion de BD dans ma classe, si tu peu mcorrigé jtenseré reconnaison:






Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:Techno";
Connection conn = DriverManager.getConnection(url,"","");
Statement stat = conn.createStatement();
ResultSet result= stat.executeQuery("select Nom from Emplacement where Nom='"+d+"'");
if(!result.next()){
JOptionPane.showMessageDialog(null, "Emplacement non existant!","",JOptionPane.WARNING_MESSAGE);
}
else{
ResultSet r= stat.executeQuery("select * from Emplacement ");
while(r.next()){
ResultSet rest= stat.executeQuery("select user from e"+r.getString(2)+" where id_prod='"+c+"'");
if(rest.next()){
JOptionPane.showMessageDialog(null, "Cet identifiant existe déjà, veuillez le changer","",JOptionPane.WARNING_MESSAGE);
}
rest.close();
}
stat.execute("insert into e"+d+" values ('"+c+"','"+b+"','"+a+"')");
JOptionPane.showMessageDialog(null, "Ajout réussit!","",JOptionPane.WARNING_MESSAGE);
dispose();
new Menu().setVisible(true);
r.close();

}
result.close();
stat.close();
conn.close();
}
0
francis
 
Ca te met l'erreur à quelle ligne ?
0
francis
 
La doc java dit ça a propos de l'interface Statement :

By default, only one ResultSet object per Statement object can be open at the same time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists.
0

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

Posez votre question
aa
 
donc jpeu pa ouvrir lé 3 resulset en mém templs ?????
0
francis
 
Ben visiblement il te faut un object statement par resultset.
Essaie, tu verras bien !
0
aa
 
jé pa bien compri ske tu ma demandé de fér, peu tu me donné un exemple
é merci
0
aaaaaaaaaaaaaaaaa
 
alors ?
0
francis
 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:Techno";
Connection conn = DriverManager.getConnection(url,"","");
Statement stat = conn.createStatement();
ResultSet result= stat.executeQuery("select Nom from Emplacement where Nom='"+d+"'");
if(!result.next()){
JOptionPane.showMessageDialog(null, "Emplacement non existant!","",JOptionPane.WARNING_MESSAGE);
}
else{
Statement stat2 = conn.createStatement();
ResultSet r= stat2.executeQuery("select * from Emplacement ");
while(r.next()){
Statement stat3 = conn.createStatement();
ResultSet rest= stat3.executeQuery("select user from e"+r.getString(2)+" where id_prod='"+c+"'");
if(rest.next()){
JOptionPane.showMessageDialog(null, "Cet identifiant existe déjà, veuillez le changer","",JOptionPane.WARNING_MESSAGE);
}
rest.close();
stat3.close();
}
stat.execute("insert into e"+d+" values ('"+c+"','"+b+"','"+a+"')");
JOptionPane.showMessageDialog(null, "Ajout réussit!","",JOptionPane.WARNING_MESSAGE);
dispose();
new Menu().setVisible(true);
r.close();
stat2.close();
}
result.close();
stat.close();
conn.close();
0