Problème avec plusieurs ResultSet

Littleroswell Messages postés 7 Date d'inscription mardi 1 janvier 2002 Statut Membre Dernière intervention 20 août 2004 - 22 août 2002 à 18:15
Tahvan Messages postés 4 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 3 février 2006 - 1 juin 2004 à 18:41
Je passe les détails de connexions etc...
Imaginons ce code:

// DEBUT DU CODE

ResultSet rs, rs2;
String leNom;

requete = "SELECT * FROM INDIV";
rs = stmt.executeQuery(requete);

rs.beforeFirst();
while(rs.next())
{
leNom = rs.getString("nom");

requete = "INSERT INTO INDIV_TMP (nom) VALUES ('" + leNom + "')";

rs2 = stmt.executeQuery(requete);
rs2.close();
}
rs.close();

// FIN DU CODE

Imaginons que la première requete renvoie 4 enregistrement je devrais boucler 4 fois et exécuter 4 fois la requete INSERT.

HORS dès que la requete d'INSERT s'exécute la première fois. Quand on va vouloir lire le 2ième enregistrement et bien le ResultSet rs est vide ou null et ca ne passe qu'une seule fois comme si quand on avait plusieurs ResultSet le précédent disparaissait!!!
Si je mets en commentaire les 2 lignes:
rs2 = stmt.executeQuery(requete);
rs2.close();

je passe bien 4 fois dans la boucle!!!

Comment faire pour ke ca marche qd même, c koi l'astuce!!!!! Aidez moi please!

j'utilise SDK 1.3.1 avec mysql-connector-java-2.0.14

5 réponses

Littleroswell Messages postés 7 Date d'inscription mardi 1 janvier 2002 Statut Membre Dernière intervention 20 août 2004
22 août 2002 à 20:12
Et même avec SDK 1.4 ca ne marche pas et ne mets toujours pas d'erreur par contre avec la version mysql-connector-java-3.00 ca ne marche pas mieux mais ca mets un erreur "NullPointerException", certes!
0
Littleroswell Messages postés 7 Date d'inscription mardi 1 janvier 2002 Statut Membre Dernière intervention 20 août 2004
23 août 2002 à 13:33
En faite c'était tout bête, qd on veut gérer plusieurs ResultSet en même temps il faut créer autant de Statement.
Sinon effectivement 2 ResultSet avec un seul Statement, le 2ieme ResultSet fait reinitialiser le Statement. D'ou se servir de 2 Statement
0
tchiomimine Messages postés 4 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 3 février 2003
4 févr. 2003 à 22:42
J'ai essayé le meme style de code avec un seul statement mais ca marche pas. En fait dès que je rajoute une methode du style : "rs.beforeFirst();" le code se bloque a cet endroit. J'ai le meme probleme avec "rs.previous();"
, "rs.moveToCurrenRow();" ou bien "rs.first();" ... ca ne met pa d'erreur et a l'affichage ca s'arrete a ces lignes la ... quand je les enleve tt marche ... et quand j'utilise d'autres methodes du style rs.isFirst(); ou rs.next(); ca marche très bien ....
Merci de m'aider !!!
0
Littleroswell Messages postés 7 Date d'inscription mardi 1 janvier 2002 Statut Membre Dernière intervention 20 août 2004
22 mars 2003 à 08:34
Ouhais et donc avec autant de statement que tu utilises de ResultSet quand tu les imbriques, ca devrait fonctionner!!
C'est la solution que je donne dans le message précédent.

littleroswell
0

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

Posez votre question
Tahvan Messages postés 4 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 3 février 2006
1 juin 2004 à 18:41
Salut à tous !!
Voici ma question :
j'ai le même pb, c'est à dire que j'utilise plusieurs ResultSet "imbriqués", donc j'ai bien compris que je devais utiliser à chaque fois un Statement différent. Seulement les requêtes, je ne les exécutes pas directement, en fait j'appelle une fonction qui se trouve dans une classe appelée Database (contenant ma connexion). J'essaye de lui passer en argument un Statement, mais ça ne marche pas.

Classe appelante :
public class Order
{
private static Database myDB = new Database();

public ResultSet SearchAllOrders () throws SQLException
{
private static Statement stmt;
ResultSet result= myDB.ExecuteQuery(requête, stmt);
}
}
*--------------------------------------------------------------*
Classe appelée :
public class Database
{
private static ResultSet result;

public ResultSet ExecuteQuery (String sql, Statement stmt)
{
result = stmt.executeQuery (sql);
}
*--------------------------------------------------------------*

Pourquoi est-ce qu'il ne veut pas prendre mon argument lors de l'appel de la fonction "ExecuteQuery(requête, stmt)" ???

Merci d'avance!
0