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 :

Comment adapter mon ArrayList ? :-(


Sujet :

JDBC Java

  1. #1
    Membre actif
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Points : 237
    Points
    237
    Par défaut Comment adapter mon ArrayList ? :-(
    Bonsoir,

    Etant encore débutant, j'aurais besoin de votre aide s'il vous plait. J'ai deux tables la première se nomme "eleve" elle a 5 attributs (pk_eleve, fk_ecole, nom_eleve, prenom_eleve, naissance_eleve), ensuite ma second table s'intitule "ecole" elle contient 3 attributs (pk_ecole, nom_ecole, adresse_ecole).

    Mon but est de pouvoir ajouter une entrée après que l'utilisateur ait complété le formulaire, il y a une page qui nous permet également d'afficher les enregistrements.
    J'ai une méthode qui s'intitule "add" qui permet d'ajouter un enregistrement pour les deux tables là voici.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public static int add(Eleve u, Ecole m){
            int status=0;
            try{
                Connection con=getConnection();
                PreparedStatement ps1=con.prepareStatement(
                        "insert into eleve(nom_eleve,prenom_eleve,naissance_eleve,fk_ecole) values(?,?,?,?)");
                ps1.setString(1,u.getNom_eleve());
                ps1.setString(2,u.getPrenom_eleve());
                ps1.setString(3,u.getNaissance_eleve());
                ps1.setInt(4,u.getFk_ecole());
                status=ps.executeUpdate();
     
                PreparedStatement ps2=con.prepareStatement(
                        "insert into ecole(nom_ecole, adresse_ecole) values(?,?)");
                ps2.setString(1,m.getNom_ecole());
                ps2.setString(2,m.getAdresse_ecole());
                status=ps2.executeUpdate();
     
            }catch(Exception e){System.out.println(e);}
            return status;
        }
    J'ai maintenant une autre méthode qui va me permettre d'afficher les entrées elle se nomme getEnregistrements, elle fonctionne parfaitement bien pour une table au choix, mais j'aimerais bien l'adapter à mes deux tables je vois vraiment pas comment je pourrais faire.
    Avez-vous une idée de comment je pourrais ajouter une List<Ecole> dans ce bout de code svp ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public static List<Eleve> getEnregistrements(){
            List<Eleve> list=new ArrayList<Eleve>();
     
            try{
                Connection con=getConnection();
                PreparedStatement ps=con.prepareStatement("select * from eleve");
                ResultSet rs=ps.executeQuery();
                while(rs.next()){
                    Eleve u=new Eleve();
                    u.setPk_eleve(rs.getInt("pk_eleve"));
                    u.setNom_eleve(rs.getString("nom_eleve"));
                    u.setPrenom_eleve(rs.getString("prenom_eleve"));
                    u.setNaissance_eleve(rs.getString("naissance_eleve"));
                    u.setFk_ecole(rs.getInt("fk_ecole"));
                    list.add(u);
                }
     
            }catch(Exception e){System.out.println(e);}
            return list;
        }

  2. #2
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    en fait, c'est plus du sql qu'autre chose. Tu as dans ta table élèves un champs fk_ecole, autrement dit une clé étrangère (foreign key) qui stocke l'id de l'école de l'élève. Pour récupérer à la fois l'élève et l'école, tu dois faire une requête qui joint les deux tables à partir de cette clé. Fait une petite recherche sur jointure sql, ou sql joint en anglais, tu trouveras plein d'explications.
    Dans ce cas précis, la requête correspond à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from eleve join ecole on eleve.fk_ecole=ecole.pk_ecole
    ce qui te retourne toutes les colonnes avec pour chaque élève l'école qui correspond. A partir de là, tu peux reconstruire tes objets.

    Le mieux, pour ce type de structure, ce serait que l'école soit stockée pat l'élève dans ton code java, sous la forme d'un champs Ecole, avec getter et setter. Ça te permet de retourner une liste d'élèves qui contient également leurs écoles. De même, pour ton insertion, tu n'aurais qu'à mettre une objet éleve en paramètre, puisque son école est dedans.

    Concernants l'insertion d'ailleurs, es-tu sûr que le champs fk_ecole de tes élèves est valides? Tu fais un get sur une propriété fk_ecole, qui logiquement doit contenir la même valeur que id_ecole. A priori, tes clés primaires (pk) sont générés par la base de données, ce qui classique. Mais tu ne gères pas le cas où l'école n'est pas encore en base, et n'a donc pas encore de pk. Fait attention, c'est le genre de choses qui te flingue une base... Encore une fois, le mieux serait de stocker l'école dans l'élève et de récupérer directement la pk de l'école. Quand si la pk que tu récupères est null ou zéro, c'est que l'école n'est pas encore enregistré. Tu dois donc le faire, sinon la récupération par jointure ne fonctionnera pas. Et tu dois également t'assurer que les autres élèves de la même école qui n'ont pas encore été enregistré récupérent l'id de l'école.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/10/2017, 22h54
  2. [XL-2010] Comment adapter la macro Excel à mon fichier Calc
    Par Para_Xingu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/08/2015, 02h16
  3. Comment faire mon choix
    Par SoubeigAbraham dans le forum Débuter
    Réponses: 1
    Dernier message: 07/10/2004, 15h29
  4. [OpenGL] comment adapter a CB
    Par netah25 dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/06/2004, 14h42
  5. Réponses: 7
    Dernier message: 04/06/2004, 16h20

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