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 :

[Debutant][JDBC+fonction] + Passage d'un parametre ResultSet


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut [Debutant][JDBC+fonction] + Passage d'un parametre ResultSet
    Bonjour,

    Etant débutant, je tombe sur des probleme qui sont surement simple à résoudre...

    Voila mon probleme.

    Dans ma classe principale, j'appelle la fonction d'une autre classe. Cette fonction effectue un requete sur une base de données (via JDBC). Je passe en parametre de cette focntion une variable ResultSet et la requete à effectuer (String).
    Dans ma classe principale, au retour de la fonction, mon parametre ResultSet est à null.
    J'ai vraiment du mal avec ce passage de paramètre aux fonctions (en plus ResultSet est une classe abstraite...).

    Quelqu'un a t-il la soluction?

    Merci d'avance.

  2. #2
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    ce qui paraitrait plus logique ce serait que ta methode qui fait la requete prenne la requete en param et renvoie un ResultSet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public ResultSet executeQuery(String query)
    comme ca quand tu l'appelle ca donne un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultSet rs = monDAO.executeQuery("select * from test");
    montre des morceaux choisis de ton code pour plus d'info

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    Merci...

    Effectivement, je peux faire comme ça... je n'y avais pas pensé... J'étais concentré sur ce passage de parametre (en C j'aurais passé le pointeur à la fonction, c'est pour ça que je suis allé dans ce sens...)

    Merci beaucoup.

    PS : Cela dit je peux avoir besoin de passer plusieurs ResultSet à une fonction... Comment faire dans ce cas ?

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Points : 172
    Points
    172
    Par défaut
    Un ArrayList de ResultSet?

  5. #5
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    En fait, le probleme est que quand tu passe ton ResultSet en parametre et que tu change le pointeur dans le corps de la methode, tu pers la reference en sortant.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        public void methodeA(){
            ResultSet rsA = null;
            methodeB(rsA, "select * from test");
     
        }
     
        public void methodeB(ResultSet rsB, String query){
            //...
            rsB = statement.execute();
        }
    en gros sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsB = statement.execute();
    tu reaffecte une nouvelle reference a rsB et le probleme est que rsA n'est pas mis a jour....

    tu es donc obliger de passer par des container type Arraylist

  6. #6
    raj
    raj est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Points : 100
    Points
    100
    Par défaut
    Juste en passant ,
    mieux vaut prendre de bonnes habitude et faire une méthode qui envoie une
    Collection plutot qu'un ResultSet .
    Comme ca tu evite de disperser du code qui fait appel à l'API Jdbc dans
    tes classes , tu auras quelque chose de plus maintenable .

    De plus tes tests unitaires seront beaucoup plus simple à coder .
    La méthode qui effectue l'appel à la base s'occupe de creer la Collection
    à partir du ResultSet .

    Il faut se rappeler qu'une méthode ne doit prendre en paramètre que
    des objets dont elle a réellement besoin , si la méthode s'occupe par
    exemple d'afficher un tableau de données , elle a besoin d'une collection
    et non pas d'un resultset

  7. #7
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    je suis tout a fait d'accord

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    Ok...

    Merci bien pour les infos et aussi pour les conseils...

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/07/2005, 16h10
  2. [Struts][JDBC] Afficher le contenu d'un ResultSet
    Par ArseNic dans le forum JDBC
    Réponses: 11
    Dernier message: 26/01/2005, 11h11
  3. Réponses: 7
    Dernier message: 04/01/2005, 18h45
  4. [debutant][JDBC]
    Par zozolh2 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 24/05/2004, 18h16
  5. [debutant]la fonction scanf
    Par kalaka dans le forum C
    Réponses: 7
    Dernier message: 01/07/2003, 15h15

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