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 :

Interroger une base de données et générer un objet ArrayList


Sujet :

Langage Java

  1. #1
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut Interroger une base de données et générer un objet ArrayList
    Salut j'ai un problème dont j'ai du mal à résoudre le voici:

    Rédigez le code de la méthode getPeople( ) pour qu'il construise et renvoie un
    ArrayList d'objets de type Person extraits d'une base de données.

    Un objet de type java.sql.Connection a été initialisé.
    La base de données SQL contient une table people avec 3 colonnes:id(autoincrementing integer)
    ,first_name(varchar),last_name(varchar).

    En utilisant l'objet Connection,récupérer tous les enregistrements de la table, et pour chaque
    enregistrement utilisez les champs correspondants pour créer un objet de type Person.Ajoutez chaque
    objet de type Person ainsi créé à votre ArrayList.
    Renvoyez la liste obtenue.

    Voici le code qu'il faut compléter:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.*;
     
    public class ExerciceImpl {
     
        public void runExercise( String[] argv ) throws Exception {
        }
     
        public ArrayList<Person> getPeople() throws Exception {
            Connection conn = this.getCandidateConnection();
            /*----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
     
            /**** Entrez votre code ici ****/
     
            /*----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
        }
     
     
    }
     
    class Person {
        public int id;
        public String firstName;
        public String lastName;
     
        Person( int id, String firstName, String lastName ) {
            this.id= id;
            this.firstName = firstName;
            this.lastName= lastName;
        }
    }
    Voici le code que j'ai proposé:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    public class ExerciceImpl2 {
     
        public void runExercise( String[] argv ) throws Exception {
        }
     
        public ArrayList<Person2> getPeople() throws Exception {
            Connection conn = this.getCandidateConnection();
            /*----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
     
            /**** Entrez votre code ici ****/
     
            /*----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
        }
     
        private Connection getCandidateConnection() {
        }
    }
     
    class Person2 {
        public int id;
        public String firstName;
        public String lastName;
     
        Person2( int id, String firstName, String lastName ) {
            this.id= id;
            this.firstName = firstName;
            this.lastName= lastName;
        }
    }
    Honnêtement, je n'ai pas pu compléter grande chose(j'ai juste créé la méthode getCandidateConnection( ) sans corps)
    car je ne sais pas comment
    la compléter et aussi pour la suite,je ne sais pas comment interroger une base de données dans un programme java.
    En gros , j'ai du mal avec ce problème.

    Pouvez vous m'aidez svp?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Ben, le truc c'est que pour faire ça, il faut avoir quelque part une base de données avec cette table et des données dedans. Il faut savoir où est cette base de données, de quel driver elle a besoin et comment y accéder. C'est pas mal de choses.

    Bon, en théorie tu pourrais faire que ton programme crée sa propre base de données en mémoire, genre avec sqlite. Mais ça fait beaucoup de choses à préparer juste pour faire l'exercice.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut
    Vous parlez de la JDBC?(Java Data Base Connectivity),je dois utiliser le driver?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Non, je parle d'une base de donnée. Genre un serveur Oracle, ou MySql, ou autre chose, en cours de fonctionnement quelque part.

    Et il faut également le driver compatible avec cette base de données, oui.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut
    J'ai fait le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public ArrayList<Person> getPeople() throws Exception {
     
            ResultSet resultSet=null;
           try( Connection conn = this.getCandidateConnection();
                Statement statement= conn.createStatement();){
               String selectSql = "SELECT id, first_name, last_name from people";
               resultSet = statement.executeQuery(selectSql);
     
        }catch (SQLException e){
               e.printStackTrace();
           }
     
            }
    Mais on me demande de récupérer tous les enregistrements de la table et pour chaque enregistrement
    d'utiliser les champs correspondant pour créer un objet de type Person.
    Et aussi d'ajouter ces objets de type
    Person ainsi créés à mon ArrayList (En effet, je dois construire et renvoyer un ArrayList de type Person
    extraits de la base de données).

    Comment dois procéder? j'ai pensé à utiliser un objet Map pour récupérer les champs de la base de données.
    Est ce une bonne idée svp?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Non, le ResultSet contient tout ça. Ce que tu dois faire, c'est créer les instances de Personne.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut
    D'accord, je vais le faire et je vais vous le faire voir si c'est correcte.

  8. #8
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut
    Je crée des instances de Person dans le try-catch où à l'extérieur du
    try-catch

    Voici le code:

    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
    public ArrayList<Person> getPeople() throws Exception {
     
            ResultSet resultSet=null;
           try( Connection conn = this.getCandidateConnection();
                Statement statement= conn.createStatement();){
               String selectSql = "SELECT id, first_name, last_name from people";
               resultSet = statement.executeQuery(selectSql);
               Person person1=new Person( );
              List<Person>=new ArrayList<Person>;
     
        }catch (SQLException e){
               e.printStackTrace();
           }
     
            }
    c'est bon ce code?

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Alors déjà il compile même pas, et ensuite je te vois pas mettre de Personne dans la liste.

    Mais oui, forcément il faut le faire à l'intérieur du try, puisque sortir du try ferme la connection, et avec elle le ResultSet. Il faut lire toutes les données du ResultSet, puis quand tu as fini de t'en servir et tu n'en as plus besoin, tu peux sortir du try.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut
    Voici mon nouveau code, je pense qu'il est mieux:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public ArrayList<Person2> getPeople() throws Exception {
            Connection conn = this.getCandidateConnection();
     
            final String selectSql = "SELECT id, first_name, last_name "
                    + "FROM people ORDER BY last_name, first_name";
            ArrayList<Person2> al = new ArrayList<>();
            try (Statement statement = conn.createStatement(); //
                 ResultSet resultSet = statement.executeQuery(selectSql)) {
                while (resultSet.next()) {
                    int id = resultSet.getInt("id");
                    String firstName = resultSet.getString("first_name");
                    String lastName = resultSet.getString("last_name");
                    al.add(new Person2(id, firstName, lastName));
                }
            } catch ( SQLException e){
                e.printStackTrace();
            }
     
            finally {
                if (conn != null) {
                    conn.close();
                }
            }
            return al;
        }
        private Connection getCandidateConnection() {
            return null;
        }
     
    }
    Qu'est ce que vous en pensez svp?

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

Discussions similaires

  1. interroger une base de données mysql avec Quartz
    Par yousse dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/08/2009, 13h04
  2. interroger une base de donnée a distance
    Par Msysteme dans le forum C#
    Réponses: 42
    Dernier message: 27/05/2009, 13h11
  3. interroger une Base de données?
    Par secondechance dans le forum Bases de données
    Réponses: 9
    Dernier message: 09/04/2009, 10h29
  4. [1.x] Interroger une base de données
    Par rockybalboa dans le forum Symfony
    Réponses: 4
    Dernier message: 11/05/2008, 22h05
  5. Interroger une base de données blacklist
    Par undercrash dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 29/04/2008, 09h54

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