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 :

Lecture fichier XML Settings JDBC


Sujet :

JDBC Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Par défaut Lecture fichier XML Settings JDBC
    Bonjour,

    J'essaie de lire ce que j'ai récupéré d'un fichier XML via la méthode affiche(), mais ça me renvoi l'adresse de mon instance ConnectDB.

    Le fichier XML contient les user, psw, url de ma DB, que je récupère dans un objet Settings instancié dans ReadXML et renvoyé dans ConnectDB pour initialiser les attributs de ConnectDB.

    Je suis bien coincé, et je ne trouve plus de solutions.

    Voici mes différentes Class:
    Starter:
    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
     
    package be.poo.controleur;
     
    import be.poo.ConnectDB;
     
    /**
     * Class qui contient la méthode main et qui lance le programme
     *
     * @author Fred
     */
    public class Starter {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            GestionEntités gest = GestionEntités.getInstance();
            ConnectDB con = ConnectDB.getInstance();
            gest.affiche(con);
        }
     
    }
    GestionEntités:
    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
    35
    36
    37
    38
    39
    40
    41
     
    package be.poo.controleur;
     
    import be.poo.ConnectDB;
     
    /**
     * Gestion d'entité, qui me sert de controleur, on y retrouvera tous le corp
     * métier et différentes méthode.
     *
     * @author Fred
     */
    public class GestionEntités {
     
        private static final GestionEntités INSTANCE = new GestionEntités();
     
        //*************Constructeur par défaut*************************************
        GestionEntités() {
        }
     
        /**
         * getInstance, retourne une instance unique de mon controleur
         *
         * @return
         */
        public static GestionEntités getInstance() {
            return INSTANCE;
        }
     
        //ConnectDB con = ConnectDB.getInstance();
     
     
        /**
         * Méthode de TEST pour voir ce que je récupère du fichier XML
         *
         * @param con
         */
        public void affiche(ConnectDB con) {
            System.out.println(con);
        }
     
    }
    Settings:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    package be.poo.persistence;
     
    /**
     * Class Settings qui me sert à récupérer les settings de connexion à la DB
     *
     * @author Fred
     */
    public class Settings {
     
        //Attributs
        String user, psw, url;
     
        //Constructeur
        public Settings(String user, String psw, String url) {
            this.user = user;
            this.psw = psw;
            this.url = url;
        }
     
        //Accesseurs
        public String getUser() {
            return user;
        }
     
        public void setUser(String user) {
            this.user = user;
        }
     
        public String getPsw() {
            return psw;
        }
     
        public void setPsw(String psw) {
            this.psw = psw;
        }
     
        public String getUrl() {
            return url;
        }
     
        public void setUrl(String url) {
            this.url = url;
        }
     
    }
    ReadXML:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    package be.poo.persistence;
     
    import java.io.File;
    import org.jdom2.Document;
    import org.jdom2.Element;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
    import javax.swing.JOptionPane;
    import org.jdom2.JDOMException;
    import org.jdom2.input.SAXBuilder;
     
    /**
     * Classe qui va ouvrir un flux et lire un fichier XML pour récupérer les
     * settings nécessaire pour la connexion à la DB
     *
     * @author Fred
     */
    public class ReadXML {
     
        //Attributs
        public String user, url, psw;
        public Document document;
        public Element racine;
        private static final String FICHIERARTICLE = "settingDB.xml";
     
        //Constructeur
        public ReadXML() {
            //Création une instance de SAXBuilder
            SAXBuilder sxb = new SAXBuilder();
            try {
                //Création d'un document JDOM avec en argument le fichier XML
                document = sxb.build(new File(FICHIERARTICLE));
            } catch (JDOMException | IOException ex) {//Gestion d'erreur de lecture XML
                JOptionPane.showMessageDialog(null, "Fichier XML non trouvé" + ex);
                //System.out.println("Erreur : " + ex);
            }
            //Création de l'élément racine à partir du document.
            racine = document.getRootElement();
        }
     
        /**
         * Méthode qui lis le contenu du fichier XML, rempli les attributs d'un
         * Setting tant qu'il y en a et renvoi ce Settings.
         *
         * @return
         */
        public Settings settingDB() {
            Settings settings = new Settings(user, psw, url);
            //Création d'une liste contenant tous les noeuds "setting" de l'Element racine
            List listSettings = racine.getChildren("setting");
            Iterator iter = listSettings.iterator();
            while (iter.hasNext()) {
                Element courant = (Element) iter.next();
                settings.setUser(courant.getChild("user").getText());
                settings.setUrl(courant.getChild("url").getText());
                settings.setPsw(courant.getChild("password").getText());
            }
            return settings;
        }
     
    }
    ConnectDB:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    package be.poo.persistence;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import javax.swing.JOptionPane;
     
    /**
     * Class ConnectDB pour me connecter à la DB.
     *
     * @author Fred
     */
    public class ConnectDB {
     
        private static String urlDB;
        private static String passwordDB;
        private static String userDB;
        private static Object INSTANCE;
        public static ReadXML read = new ReadXML();
     
        //Constructeur
        public ConnectDB(String url, String psw, String user) {
            ConnectDB.urlDB = read.settingDB().url;
            ConnectDB.passwordDB = read.settingDB().psw;
            ConnectDB.userDB = read.settingDB().user;
        }
     
        /**
         * Méthode getInstance, crée une instance unique de ConnectDAO et renvoie
         * cet instance.
         *
         * @return
         */
        public static ConnectDB getInstance() {
            if (ConnectDB.INSTANCE == null) {
                INSTANCE = new ConnectDB(urlDB, passwordDB, userDB);
            }
            return (ConnectDB) INSTANCE;
        }
     
        /**
         * Méthode pour la connexion à la DB
         *
         * @return
         * @throws SQLException
         */
        public Connection connection() throws SQLException {
            Connection con;
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                con = DriverManager.getConnection(("jdbc:mysql://") + ConnectDB.urlDB, ConnectDB.userDB, ConnectDB.passwordDB);
                return con;
            } catch (ClassNotFoundException ex) {//Gestion d'erreur en cas de Driver
                JOptionPane.showMessageDialog(null, "Erreur driver mysql: " + ex);
                return null;
            } catch (SQLException ex) {//Gestion d'erreur si problème connexion à la DB
                JOptionPane.showMessageDialog(null, "Problème de connexion à la DB!" + ex);
                return null;
            }
     
        }
     
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Par défaut
    TROUVE,

    J'ai overider la méthode toString dans ConnectDB, vu que ma méthode affiche l'appel implicitement.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    package be.poo.persistence;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import javax.swing.JOptionPane;
     
    /**
     * Class ConnectDB pour me connecter à la DB.
     *
     * @author
     */
    public class ConnectDB {
     
        private static String urlDB;
        private static String passwordDB;
        private static String userDB;
        private static Object INSTANCE;
        public static ReadXML read = new ReadXML();
     
        //Constructeur
        public ConnectDB(String url, String psw, String user) {
            ConnectDB.urlDB = read.settingDB().url;
            ConnectDB.passwordDB = read.settingDB().psw;
            ConnectDB.userDB = read.settingDB().user;
        }
     
        /**
         * Méthode getInstance, crée une instance unique de ConnectDAO et renvoie
         * cet instance.
         *
         * @return
         */
        public static ConnectDB getInstance() {
            if (ConnectDB.INSTANCE == null) {
                INSTANCE = new ConnectDB(urlDB, passwordDB, userDB);
            }
            return (ConnectDB) INSTANCE;
        }
     
        /**
         * Méthode pour la connexion à la DB
         *
         * @return
         * @throws SQLException
         */
        public Connection connection() throws SQLException {
            Connection con;
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                con = DriverManager.getConnection(("jdbc:mysql://") + ConnectDB.urlDB, ConnectDB.userDB, ConnectDB.passwordDB);
                return con;
            } catch (ClassNotFoundException ex) {//Gestion d'erreur en cas de Driver
                JOptionPane.showMessageDialog(null, "Erreur driver mysql: " + ex);
                return null;
            } catch (SQLException ex) {//Gestion d'erreur si problème connexion à la DB
                JOptionPane.showMessageDialog(null, "Problème de connexion à la DB!" + ex);
                return null;
            }
     
        }
     
        /**
         * Pour test d'affichage settings DB
         *
         * @return
         */
        @Override
        public String toString() {
            return ConnectDB.urlDB + " " + ConnectDB.userDB + " " + ConnectDB.passwordDB;
        }
     
    }

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

Discussions similaires

  1. [C#-XML] - Problème de lecture fichier XML
    Par Gloups dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/08/2006, 00h40
  2. Lecture fichier xml aux caracteres accentués
    Par LFC dans le forum Modules
    Réponses: 2
    Dernier message: 13/02/2006, 19h45
  3. Réponses: 3
    Dernier message: 09/12/2005, 17h42
  4. [Jdbc] Lecture fichier DBF via JDBC
    Par djidji dans le forum JDBC
    Réponses: 4
    Dernier message: 06/09/2005, 14h14
  5. [SAX] Problème lecture fichier xml
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2005, 18h11

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