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

JDBC Java Discussion :

[débutante]modification d'un attribut dans un bloc "Try


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut [débutante]modification d'un attribut dans un bloc "Try
    Salut,

    je possède une classe ConnectionBase qui me permet de me connecter à une base de donnée. Celle ci contient une methode "public void queryDatabase(String req)" qui doit me permettre d'effectuer une requete.

    Dans ma classe, j'ai déclaré différents attributs dont, en autre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private Statement stmt;
    private ResultSet rs;
    dans ma methode querydatabase, je cherche à modifier mon attribut rs, cependant, je suis obligée d'effectuer cette modification dans un bloc try.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void queryDatabase(String req) {
                    try {
                            setRs(stmt.executeQuery(req));
                            System.out.println("requete effectué");
                    } catch (SQLException E) {
    Apres divers test, je me suis rendue compte que cette modification n'etait pas pris en compte.
    Savez vous comment je peux effectuer cette modification?
    merci

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Verifie que tu n'as pas une exception dans ton try-catch(ton code ne mentionne pas ce qui se passe en cas d'exception). De plus tu dois si possible appeler les fonctions utilisant les variables que tu modifie depuis l'intérieur d ton try-catch
    First, they ignore you. Then, they laught at you.Then, they fight you. Then, you win.

    Mohandas Gandhi

  3. #3
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    je n'ai pas mis tout mon code, mais je gère bien les exceptions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void queryDatabase(String req) {
                    try {
                            setRs(stmt.executeQuery(req));
                            System.out.println("requete effectué"); 
                    } catch (SQLException E) {
                            System.out.println("Erreur lors de l'envoie à la requete : ");
                            System.out.println("SQLException : " + E.getMessage());
                    }
           }
    De plus tu dois si possible appeler les fonctions utilisant les variables que tu modifie depuis l'intérieur d ton try-catch
    la fonction setRS doit normalement modifier mon rs, mais quand j'essaie de faire appelle à mon rs par la suite, je me rends compte qu'il n'a aps été modifié. et pourtant, je sais que je suis bien rentrée dans mon bloc try, vu que "requete effectué" a bien été affiché....

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    essaye d'afficher ton rs dans le try-catch juste aprés l'avoir modifié; tu pourra ainsi vérifier que ta fonction fait bien son travail ou si c'est ton try-catch qui pose pb.
    First, they ignore you. Then, they laught at you.Then, they fight you. Then, you win.

    Mohandas Gandhi

  5. #5
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    lorsque je lui demande d'affiche le nombre de résultat dans mon try-catch, il l'affiche correctement. si je lui demande en dehors, il m'affiche 0.

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Je ne connais pas la fonction setRs(). Quel est son retour? Ne devrais-tu pas faire qqchose du style rs=(valeur du rs)?
    First, they ignore you. Then, they laught at you.Then, they fight you. Then, you win.

    Mohandas Gandhi

  7. #7
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    c'est une fonction que j'ai codé. un accesseur tout simple qui modifie mon attribut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private void setRs(ResultSet rst){
        rs = rst;
    }

  8. #8
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    je pense savoir d'ou viens mon probleme....
    en fait, dans mon code pour ma fonction queryDatabase, j'ai enlevé (seulement lorsque j'ai copié collé mon code, et non lorsque j'execute mon code) une fonction getNB(rs) qui me permet de compter le nombre de resultat.
    le code exact de ma fonction est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void queryDatabase(String req) {
                    try {
                            setRs(stmt.executeQuery(req));
                            System.out.println("requete effectué");
                            System.out.println(getNB(rs));
                    } catch (SQLException E) {
                            System.out.println("Erreur lors de l'envoie à la requete : ");
                            System.out.println("SQLException : " + E.getMessage());
                    }
                    System.out.println(getNB(rs));
           }
    ce qui me permettait de verifier que ma requete me récuperer bien le nombre de résultat attendu, dans le bloc try-catch, et en dehors de celui ci

    Or voici le code de ma fonction getNB :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public int getNB(ResultSet result) {
                    int nb = 0;
                    try {
                            while(result.next()){
                            nb++;
                            }
                    } catch (SQLException E) {
                            System.out.println("Un probleme est survenu.");
                    } catch (NullPointerException E){
                            nb=0;
                    }
                    return nb;
            }
    dans cette fonction j'effectue un result.next() qui me fait avancer un poiteur devant chaque ligne de mes résultats.
    Je pense donc qu'à la fin de la premiere utilisation de mon getNB(rs), le pointeur est arrivé à la fin de la liste de tous mes resultats. et lorsque j'appelle la fonction une deuxieme fois, le pointeur est toujours à la fin de la liste.

    il me faut donc remettre mon pointeur en debut de liste des mes lignes de resultats de mon rs.
    savez vous comment cela est possible? merci d'avance.

  9. #9
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    ça y est, j'ai trouvé :

    methode beforeFirst();

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] erreur lors de modification d'attribut dans un formulaire
    Par j.lebowski dans le forum IHM
    Réponses: 2
    Dernier message: 13/07/2010, 13h37
  2. Réponses: 19
    Dernier message: 27/01/2010, 11h50
  3. VBScript ASP ET XMLDOM Modification attribut dans un fichier XML
    Par PrinceMaster77 dans le forum VBScript
    Réponses: 12
    Dernier message: 11/06/2007, 06h13
  4. [VBS][Débutant] modification dans Active Directory
    Par _alex_ dans le forum VBScript
    Réponses: 1
    Dernier message: 12/05/2006, 22h52
  5. [Débutant] Modifs dans Delphi
    Par J-P-B dans le forum XMLRAD
    Réponses: 6
    Dernier message: 20/06/2003, 15h55

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