elfourbos
Messages postés66Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention10 août 2007
-
25 janv. 2006 à 22:08
cs_gattous
Messages postés100Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 7 octobre 2007
-
8 févr. 2006 à 17:02
Bonjour a tous trés cher amis développeur
voila bien comme d'habitude j'arrive avec un problème mais j'ai pu apporter des solutions a d'autres problèmes quand même..8)
Mon problème est le suivant:
je fais une requête ( select id from table where nom=nom; ), mais que ce passe t il si la requete sql ne trouve pas d'id???
que retourn rs = stmt.executeQuery("select id from table where nom=nom;"); //qu'y a t'il dans rs quand la requete donne aucun résultat
cs_gattous
Messages postés100Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 7 octobre 2007 26 janv. 2006 à 16:09
s'il trouve pas d'id, donc le nom de la colonne est introuvable, il va relever une SQLException, et puisque d'habitude on ecrit le reste du traitement ds la boucle
try{
.....
t1-->rs = stmt.executeQuery("select id from table where nom=nom;");
traitement1...
.....
....
}
catch (SQLException sqle) // ou simple Exception
{
traitement2
}
le programme passe directement a l'instant t1 aau traitement t2.
Autre cas, s'il y a pas d'erreur sql, le champ id existe bien, mais la requete ne retourne aucun resultat, alors rs est tout simplement "null", et tout les traitements qu'on veut faire sur les enregistrements, classiquement contenus ds la boucle "while (rs.Next()) {traitement}", ne se font pas , car tout simplement rs.Next()==false!!
elfourbos
Messages postés66Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention10 août 2007 26 janv. 2006 à 19:48
est ce que tu es sur qu'il te fournit une erreur sql s'il n'y a pas de nom correspondant à la requête. J'ai essayé d'intégré ta technique dans mon code mais il ne se produit toujours rien. Je vais montrer cette partie de code pour que cela deviene plus explicative.
/* code */
try {
ConnecterBD();
stmt = conn.createStatement();
try {
rs = stmt.executeQuery("select idcreator from creator where nomcreator='"+creator+"';");//paramètre passer par la méthode post
}catch (SQLException sqle) {
stmt.executeUpdate("insert into creator (idcreator, nomcreator) values ('','"+creator+"');");
}
ce code est effectué dans le doPost (servlet) et lors de la creation de la page html, tout est ok sans erreur, mais dans la base pas d'entrée ajouté, a croire qu'il ne passe pas dans le catch.
en fait, je voudrais créer une entrée s'il n'en trouve pas une déjà présente!!
merci d'avance!!
mat.
elfourbos
Messages postés66Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention10 août 2007 8 févr. 2006 à 16:30
Excuse moi, j'était encore a fond dans cet appli., Alors le rs.wasNull() n'avait pas trop l'air de marché bizarrement, alors comme tu me l'a conseillé j'ai effectué le reste de mon traitement dans le catch ( c'est pas trop optimisé ) mé ca me pose pas de problème car la requête s'executè mais bloquait le programme.
Voila merci beaucoup encore pour ton aide
mat.