IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Comment récupérer une SQLException et l'afficher dans une fenêtre de dialogue


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Salut!

    Je travaille avec les EJBs, Oracle et Jboss et j'aimerais récupérer les SQLExceptions affichées par Oracle sur Jboss et les afficher dans un fichier ou une fenêtre de dialogue.
    Quelqu'un pourrait m'aider? Merci

  2. #2
    Membre habitué
    Avatar de jolatouf
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 170
    Points : 189
    Points
    189
    Par défaut
    bonjour,

    il suffit que tu englobes ton code dans un try catch

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try{
     
    //ton code qui utilise du sql
     
    catch ( SqlException SqlEx ) 
        { 
          System.out.println(SqlEx);
        }

  3. #3
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Pour une fenetre graphique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JOptionPane.showMessageDialog(this,monMessage,"Erreur",JOptionPane.ERROR_MESSAGE);

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    ça marche pas!
    Voici l'erreur affichée par Jboss

    09:36:04,529 INFO [STDOUT] Suppression
    09:36:04,539 ERROR [TB_AUTEURS] Could not remove 51
    java.sql.SQLException: ORA-02292: integrity constraint (CISMEF.FK_TB_AUTEU_AF_A_TB_AUTEU) violated - child record found

    On voit bien qu'il relève une SQLException.
    Voici mon code:
    try{
    test.supprimer();
    }
    catch(SQLException e){ //
    System.out.println(e);
    }
    Il aime pas mon catch(SQLException e), il dit : This execption is never thrown from the block try

  5. #5
    Membre régulier Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 119
    Points
    119
    Par défaut
    Tu devrais avoir un try{}catch{} autour du code qui execute la requete : executeQuery()

    Remarque : executeQuery() renvoi une SQLException donc tu peux faire un try catch( SQLException e ) autour de cette méthode.

    Pour pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try{
    test.supprimer();
    }
    catch(SQLException e){ //
    System.out.println(e);
    }
    la fonction supprimer doit avoir la signature suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void supprimer() throws SQLException
    Je te conseille de mettre au point sur la gestion des exceptions en Java car tu vas très souvent l'utiliser.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Merci Seb.
    J'explique:
    En fait dans ma méthode supprimer() je n'utilise pas de code sql, c'est l'ejb qui s'occupe d'interroger Oracle pour supprimer dans la base de données; Donc ce qu'il me faut c'est de récupérer sur ma console d'exécution les messages d'erreurs (SQLException) affichés par Oracle J'ai vu dans un tuto qu'on peut utiliser les Logger. Quelqu'un sait ce que c'est et comment on les utilise?

  7. #7
    Membre régulier Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 119
    Points
    119
    Par défaut
    Cet EJB qui interroge la base, c'est un entity bean ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Bonjour,
    Ce sujet serait peut-être approprié dans le forum EJB, mais bon, essayons quand même d'y répondre depuis le forum général. Effectivement, si ton EJB est un entity bean CMP, tu n'aurais aucun moyen de récupérer directement l'exception SQLException pour l'afficher sur ta console étant donné que c'est le container qui gère tous les problèmes de persistence et donc d'accès à la base de données. Par contre, dans le cas de l'erreur que tu indiques, je pense qu'il y a une RemoveException qui est renvoyée vers l'application appelante par la méthode "remove()" que tu appelles sur l'EJB, et cette exception encapsule sinon l'erreur de départ qui est liée à la base de données, tu pourrais donc capturer dans ce cas cette RemoveException et l'afficher à l'utilisateur.
    En l'occurence là tu as un problème d'intégrité référentielle, tu devrais configurer le "CASCADE DELETE" dans la relation qu'il y a entre tes beans entity (si c'est bien ce que tu utilises) pour permettre des suppressions en cascade qui pourrait résoudre ce problème. Regarde bien du côté des CMR (Container-Managed Relationships )...
    En ce qui concerne les logs, je crois que tu as déjà le fichier Log de Jboss qui te permet de savoir ce qui se passe dans ton application, sauf qu'il est commun à toutes les applications déployées. Je te conseillerais de jeter un oeil sur le framework Log4J si tu comptes créer des fichiers de log personnalisés pour tes applications.
    Voilà, j'espère que ça aide.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Merci pour le RemoveException sauf qu'il affiche sur Jboss mais pas sur ma console d'eclipse
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try{
    EJB.remove();
     }
    catch(RemoveException e){
    System.out.println("coucou");
    System.out.println("e");
    }
    Voici ce que JBOSS affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    15:08:03,124 INFO  [STDOUT] coucou
    15:08:03,124 INFO  [STDOUT] javax.ejb.RemoveException: Could not remove 51: ORA-02292: violation de contrainte (CISMEF.FK_TB_AUTEU_AF_A_TB_AUTEU) d'int��grit�� - enregistrement fils existant

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Erreur dans le code que g envoyé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try{
     EJB.remove();
     }
    catch(RemoveException e){
     System.out.println("coucou");
     System.out.println(e);
     }

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 94
    Points : 102
    Points
    102
    Par défaut
    Si tu fais un System.out dans du code coté serveur tu ne risques pas de récupérer l'erreur sous Eclipse, il faut que tu "lances" l'exception jusqu'à ce qu'elle arrive sous le client.

    Sous ton client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try{
        test.supprimer();
    }
    catch(RemoveException e){ //
       //ici l'exception
    }
    Coté serveur d'application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    signature supprimer() throws RemoveException{
        try{
            EJB.remove();
         }
        catch(RemoveException e){
             throw e;
         }
    }

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Je sais je pose beaucoup de questions mais je dois le faire le plus tot possible.
    C'est bien ça la méthode mais il affiche le message sur JBOSS pas sur la console Eclipse. Quelqu'un aurait une autre idée?
    Merci

  13. #13
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Ben c'est ça que Kikito te propose. Ca ne marche pas ?

    Sur le serveur tu envoie (forward quoi) l'exception
    Sur le client (qui a appelé la méthode), tu attrapes cette exception pour la traiter ...

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    ça ne marche pas. Je suis d'accord avec manblaizo, parce que c'est le bean qui s'occupe d'interroger oracle et oracle, lui, il affiche l'erreuer d'exception. Alors pour afficher ce que affiche Oracle sur ma console d'eclipse ...

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/03/2015, 13h37
  2. Réponses: 21
    Dernier message: 26/02/2015, 21h20
  3. [MySQL] Comment récupérer le nombre d'élément présent dans une table
    Par TrX314 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/04/2007, 21h20
  4. Réponses: 2
    Dernier message: 17/09/2006, 23h33
  5. Réponses: 4
    Dernier message: 01/05/2006, 23h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo