Rechercher : dans
Par :

Erreur ODBC en java

Dernière réponse le 3 jui 2009 à 14:54:12 aaaaaaaaaaaaaaa, le 3 jui 2009 à 14:07:32 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 3.0.11

Meilleures réponses pour « erreur ODBC en java » dans :
[IE] Erreur de script / Effectuer un débogage VoirDe temps en temps, lorsque vous naviguez sur le Net et que vous chargez une page Web, un message d'erreur de script survient : Une erreur est survenue. Une erreur est survenue sur le script de cette page. Souhaitez-vous effectuer un débogage...
Java - L'API JDBC VoirIntroduction à JDBC La technologie JDBC (Java DataBase Connectivity) est un ensemble de classes permettant de développer des applications capables de se connecter à des serveurs de bases de données (SGBD). L'accès aux bases de données avec...
Servlets - Gestion des formulaires VoirIntroduction aux formulaires Les servlets rendent très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML, c'est-à-dire une interface graphique permettant à l'utilisateur de saisir des données. Grâce à la balise...
Java - Les exceptions VoirLa nécessité de détecter les erreurs Tout programme comporte des erreurs, même si celui-ci semble fonctionner à merveille. Chaque programmeur essaye de réduire au minimum le nombre d'erreurs, mais toutes les erreurs ne peuvent pas forcément être...

1

francis, le 3 jui 2009 à 14:13:33

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);
}

Répondre à francis

2

aaaaaaaaaaaaaaa, le 3 jui 2009 à 14:18:26

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();
}

Répondre à aaaaaaaaaaaaaaa

3

francis, le 3 jui 2009 à 14:26:38

Ca te met l'erreur à quelle ligne ?

Répondre à francis

4

francis, le 3 jui 2009 à 14:31:23

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.

Répondre à francis

5

aa, le 3 jui 2009 à 14:34:12

Donc jpeu pa ouvrir lé 3 resulset en mém templs ?????

Répondre à aa

6

francis, le 3 jui 2009 à 14:35:16

Ben visiblement il te faut un object statement par resultset.
Essaie, tu verras bien !

Répondre à francis

7

aa, le 3 jui 2009 à 14:40:28

Jé pa bien compri ske tu ma demandé de fér, peu tu me donné un exemple
é merci

Répondre à aa

8

aaaaaaaaaaaaaaaaa, le 3 jui 2009 à 14:51:37

Alors ?

Répondre à aaaaaaaaaaaaaaaaa

9

 francis, le 3 jui 2009 à 14:54:12

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();

Répondre à francis