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ébutant] MySQL, JDBC et combolists à jour


Sujet :

JDBC Java

  1. #1
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut [Débutant] MySQL, JDBC et combolists à jour
    Je désire, en prévision d'un projet similaire plus gros, faire une petite application java qui utiliserait une base de donnée MySQL.

    L'application ferait 3 choses simples.

    -Créer un client et consulter un client.
    -Créer un produit et consulter un produit.
    -Enregistrer une commande d'un client pour un produit.

    Le client a une adresse (et un pays qui est sur une autre table de la DB)
    Le produit appartient à une catégorie (qui est aussi sur une autre table).

    J'ai déjà créé la mini base de donnée en MySQL et je l'ai rempli de valeurs. Et j'ai déjà pris tous les renseignements sur JDBC (j'arrive facilement à me connecter à MySQL avec des programmes java ultra-simplissimes (cf la FAQ)).

    Donc au total 5 tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Pays     Categorie
      |         |
    Client    Produit
      |         |
       Commande
    Mon but dans ce mini-projet est de comprendre comment avoir une interface GUI (par exemple l'IHM du panneau client) qui est mise à jour du point de vue combolist.
    C-à-d : si on ajoute un pays dans la DB, quand on crée ensuite un nouveau client, le nouveau pays doit apparaitre dans la combolist du champs pays dans le panneau création client...
    Idem pour une nouvelle catégorie quand je crée un nouveau produit...

    Je vais certainement devoir utiliser des Prepared Statements.
    Mais je ne sais pas par où je dois commencer...

    Quelqu'un aurait-il un exemple existant déjà (aussi simple que le mini-projet que je vais essayer de faire tout seul) pour que je puisse comprendre comment une telle application se construit ? Et ainsi progresser ?

    D'avance merci de vos conseils...

    PS : ce n'est pas un post pour qu'on fasse le travail à ma place, c'est une demande pour avoir un exemple facile pour que je puisse comprendre, étudier et m'améliorer...

  2. #2
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    C'est bien ce que je pensais...

    Personne n'a des masses d'exemples sur le sujet, hélas !
    ;-)

    Alors on va essayer de le faire soi-même, hein ? ;-) ;-)



    J'ai une petite question :
    Je suis occupé maintenant à faire une classe qui va permettre d'obtenir une connection à la base de données (via JDBC bien sûr).

    Quel avantage ai-je à en faire un singleton ?
    (C'est un pote qui m'a conseillé ça, mais est-ce vraiment utile ?)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Un singleton te garantit de n'avoir qu'une connexion à la base de donnée.
    Et d'accéder facilement à la connexion puisqu'un singleton à un accès de type gobale.
    C'est donc un bon conseil qu on t a donné là
    Mess with the best, die like the rest!

  4. #4
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    OK, je tiens compte du conseil alors:
    Après avoir étudié quelques exemples, j'ai fait mon connecteur comme ça, le plus simplement possible :

    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
    /*
     * Connecteur.java
     */
    import java.sql.*;
    import javax.swing.*;
     
     
    /**
     * Connecteur crée un singleton pour mon accès à la base de donnée
     */
    public class Connecteur
    {
        static boolean    instance_flag = false;
        static Connection connection;
     
        private String    driver;
        private String    host;
        private String    dbName;
        private String    user;
        private String    passwd;
        private String    url;
     
        /**
        * Connecteur() - constructeur
        */
        public Connecteur()
    	 {
            if (instance_flag == false)
    		      {
                this.driver = "com.mysql.jdbc.Driver";
                this.host   = "localhost";
                this.dbName = "db_cliprocom";
                this.user   = "casimir";
                this.passwd = "gloubiboulga";
     
                try {
                    this.connect();
                    }
    				catch ( Exception exc )
    				    {
                    JOptionPane.showMessageDialog(null,
                        "Connecteur : problème d'accès à MySQL",
                        "Erreur d'accès B.D.", JOptionPane.ERROR_MESSAGE);
                    exc.printStackTrace();
                    }
     
                instance_flag = true;
            }
        }
     
        //obtenir une connection
        private void connect() throws Exception
    	 {
            String url = "jdbc:mysql://"+host+"/"+dbName+"?user="+user+"&password="+passwd;
            Class.forName(driver);
            connection = DriverManager.getConnection(url);
            connection.setAutoCommit(false);
        }
     
        /**
        * getConnection() - méthode static pour retourner une référence à la connection
        * @return Connection
        */
        public static Connection getConnection()
    	 {
            if (instance_flag == false) new Connecteur();
     
            return connection;
        }
    }
    Je continue ce petit programme ce week-end et reviendrai certainement avec pleins de questions lundi prochain...

  5. #5
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Bon, j'ai avancé un peu :



    Je suis arrivé à faire un mini test de connection avec ma classe PickList et à remplir une comboBox "Pays" avec les champs pays directement puisé dans la DB. Ca a bien marché pour ça, je suis déjà très content...

    Maintenant, j'ai un problème concernant l'architecture du logiciel même...
    Comment organiser mes méthodes pour que les boutons Nouveau, Modifier, Précédent, Suivant, Valider et Annuler fonctionnent correctement ?


    Je place un lien vers les fichiers sources déjà fait, et le script de création de la petite DB (+ son plan en image).

    http://membres.lycos.fr/calogerogigante/cliprocom/cliprocom.htm

    Si quelqu'un a des conseils à me donner, ou un petit coup de pouce pour savoir comment je dois faire maintenant, ça m'aiderait beaucoup...

  6. #6
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    comme ca je dirai de créer une nouvelle classe qui implémznte l'interface ActionListener et de redefinir la méthode ActionPerformed(ActionEvent arg0), c'est cette méthoe qui est appelé a chaque évenement boutton. Ensuite dans ta classe GUI a chaque boutton tu fait : .addActionListener( new Ta_classe_ActionListener() );

    voila, pour plus d'infos regarde du coté du pattern MVC qui décrit la séparation du code en trois partie pour optimiser l'application, et lapi java derai suffire pour les actons bouttons
    "vaste programme"

  7. #7
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    OK, merci... J'ai une petite idée maintenant comment je vais m'y prendre pour implémenter l'activité des boutons. J'ai, en effet, pas le choix : créer des classes distinctes pour traiter les évenements et les assigner aux boutons.

    Mais je vais revoir un peu l'écriture de ce que j'ai déjà fait, car j'ai confiné la création des 3 panels dans une seule classe (GUI.java) et je pense qu'il serait préférable de séparer la création de mes 3 panels dans 3 classes différentes.

    J'attaque ça aujourd'hui et je reviens si j'ai des questions...
    ;-)

  8. #8
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Pour ceux que ce topic intéresse et qui sont aussi à la recherche comme moi d'exemples Swing-MySQL-JDBC, j'ai trouvé ceci sur le site de Sun :



    http://java.sun.com/developer/technicalArticles/Database/dukesbakery/

    C'est un très bel exemple tout simple qui met en avant l'utilisation de JDBC avec une interface graphique Swing. Faut juste faire l'adaptation du driver ODBC-Access en driver JDBC pur, et ré-écrire la petite DB de 2 tables dans MySQL. ( Je suis prêt à donner mon adaptation à qui me le demande...)

    Bref, j'ai trouvé là plein d'idées pour avancer dans mon petit projet CLI-PRO-COM.

    Je ne ferme pas encore ce thread avant d'avoir fini le programme en prévision de futures questions...
    (J'espère que les modérateurs seront indulgents...)

    (Si Cli-Pro-Com en vaut la peine, j'en ferais aussi un tutorial plus tard).

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Petite précision : tu dois bloquer le constructeur de ton singleton en le mettant en private. Sinon ce n'est pas vraiment un singleton puisqu'il pourra etre instancié comme n'importe quel autre objet.
    De plus tu n as pas mis ton objet Connection en private non plus. Pareil pour l flag.
    Mess with the best, die like the rest!

  10. #10
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Merci, en effet !
    Toutes des remarques judicieuses !
    Bien vu Barbu !
    J'adapte immédiatement ! (Enfin, immédiatement, je veux dire tantôt, quand je serais de retour chez moi !).

Discussions similaires

  1. [Débutant] MySQL + Eclipse
    Par Gebudi. dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 01/02/2006, 23h41
  2. [JDBC]pb com.mysql.jdbc.Driver
    Par fafaroro dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 30/12/2005, 20h42
  3. Réponses: 15
    Dernier message: 30/06/2005, 16h35
  4. [Mysql][JDBC] Votre avis !
    Par sebb84 dans le forum JDBC
    Réponses: 5
    Dernier message: 07/12/2004, 14h59
  5. [débutant][tomcat][jdbc] pool de connection DBCP
    Par zozolh2 dans le forum JDBC
    Réponses: 6
    Dernier message: 19/05/2004, 17h41

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