Catch si valeur inexistante en bdd [Résolu]

tototitanium 13 Messages postés samedi 28 mars 2009Date d'inscription 8 mai 2010 Dernière intervention - 1 mai 2010 à 01:54 - Dernière réponse : cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention
- 1 mai 2010 à 16:21
Bonjour,

Voila mon soucis: ma méthode marche très bien cependant si je lis une valeur qui n'existe pas en bdd, la fonction saute dans le catch hors je souhaite quelle se poursuive après le catch

public int testRequete()
{
    try 
    {
        for(int i=0; i<tab.size(); i++)  //tab est un ArrayList contenant plusieurs valeur entière (seule sa taille peut varier)
        {
            reponseRequete maConnexion.getRq().executeQuery("SELECT id FROM table WHERE a '" + tab.get(i) + "'");  //on regarde si on trouve un id en fonction de ma liste contenu dans le tableau, si on ne trouve rien on passe à l'élément suivant dans tab           
            reponseRequete.next();
            valeurLue = reponseRequete.getInt("id");
        }
    catch (SQLException ex)
    {
        Logger.getLogger (Test.class.getName()).log(Level.SEVERE, null, ex);
    }

    return valeurLue; 
}
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 1 mai 2010 à 07:53
3
Merci
Salut,

Teste s'il existe une valeur :
public int testRequete()
{
ResultSet reponseRequete;
try
{
for(int i=0; i<tab.size(); i++) //tab est un ArrayList contenant plusieurs valeur entière (seule sa taille peut varier)
{
reponseRequete maConnexion.getRq().executeQuery("SELECT id FROM table WHERE a '" + tab.get(i) + "'"); //on regarde si on trouve un id en fonction de ma liste contenu dans le tableau, si on ne trouve rien on passe à l'élément suivant dans tab
if (reponseRequete.next()) {
valeurLue = reponseRequete.getInt("id");
}
}
catch (SQLException ex)
{
Logger.getLogger (Test.class.getName()).log(Level.SEVERE, null, ex);
}
finally {
if (reponseRequete != null) {
reponseRequete.close();
}
}

return valeurLue;
}
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 118 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
tototitanium 13 Messages postés samedi 28 mars 2009Date d'inscription 8 mai 2010 Dernière intervention - 1 mai 2010 à 02:00
0
Merci
Edit: Petite erreur dans mon code de départ valeurLue est normalement un ArrayList lui aussi donc ce n'est plus

valeurLue = reponseRequete.getInt("id");


mais

valeurLue.add(reponseRequete.getInt("id"));




Bref, ma question de départ reste la même avec l'histoire du catch...
Commenter la réponse de tototitanium
tototitanium 13 Messages postés samedi 28 mars 2009Date d'inscription 8 mai 2010 Dernière intervention - 1 mai 2010 à 15:25
0
Merci
Bonjour,

Écoutez merci infiniment vous avez résolu mon problème en 2sec alors que je m'arrachais les cheveux pour rien trouver.

Sinon petite question par rapport à votre réponse le bloc finally {}, il sert si cela foire dans le catch non ? Mais si on rentre dans le catch ira t-il dans le finally ensuite ?


Dans tous les cas merci pour tout
Commenter la réponse de tototitanium
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 1 mai 2010 à 16:03
0
Merci
Salut,

Pas vraiment : le finally est appelé quoiqu'il arrive : qu'il y est une exception ou pas, le bloc finally est appelé.

Dans ton cas, c'est primordial pour fermer le Resultset, sinon tu auras une fuite mémoire !
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
tototitanium 13 Messages postés samedi 28 mars 2009Date d'inscription 8 mai 2010 Dernière intervention - 1 mai 2010 à 16:14
0
Merci
Ok, merci pour la précision !

J'en conclus que dans toutes mes méthodes où j'utilise des requêtes je dois faire un close() au Resultset.


Au final, ce sujet m'a résolu deux problèmes en un ! C'est parfait, merci grand maitre Java ! A très bientôt !
Commenter la réponse de tototitanium
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 1 mai 2010 à 16:21
0
Merci
Salut,

Tout à fait, si tu ne fermes par les Resultset (mais également les connexion à ta base de données), attends toi à avoir des exceptions OutOfMemory au bout d'un certain temps.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.