Erreur ODBC en java

Fermé
aaaaaaaaaaaaaaa - 3 juil. 2009 à 14:07
 francis - 3 juil. 2009 à 14:54
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

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
3 juil. 2009 à 14:18
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
Ca te met l'erreur à quelle ligne ?
0
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
donc jpeu pa ouvrir lé 3 resulset en mém templs ?????
0
Ben visiblement il te faut un object statement par resultset.
Essaie, tu verras bien !
0
jé pa bien compri ske tu ma demandé de fér, peu tu me donné un exemple
é merci
0
aaaaaaaaaaaaaaaaa
3 juil. 2009 à 14:51
alors ?
0
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