Littleroswell
Messages postés7Date d'inscriptionmardi 1 janvier 2002StatutMembreDernière intervention20 août 2004
-
22 août 2002 à 18:15
Tahvan
Messages postés4Date d'inscriptionvendredi 29 août 2003StatutMembreDerniè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);
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
Littleroswell
Messages postés7Date d'inscriptionmardi 1 janvier 2002StatutMembreDernière intervention20 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!
Littleroswell
Messages postés7Date d'inscriptionmardi 1 janvier 2002StatutMembreDernière intervention20 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
tchiomimine
Messages postés4Date d'inscriptionsamedi 1 février 2003StatutMembreDerniè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 !!!
Littleroswell
Messages postés7Date d'inscriptionmardi 1 janvier 2002StatutMembreDernière intervention20 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Tahvan
Messages postés4Date d'inscriptionvendredi 29 août 2003StatutMembreDerniè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)" ???