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 :

NetBeans ne m'affiche pas le contenu de ma table : problème ODBC


Sujet :

JDBC Java

  1. #181
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    NAN NAN NAN !!!

    Le but de la classe est d'encapsuler le fait d'obtenir une connexion et de fermer la connexion.

    Donc : pas de classe main qui est fait pour lancer toute l'application (tu n'as qu'une seule classe main active dans une appli)

    tu dois avoir :
    - une méthode "factory" pour avoir une connexion
    - une méthode pour clore la connexion

    Et surtout rien en static

    du genre :
    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
     
    package appliconnexion;
    import java.sql.*;
     
    public class Connexion {
       Connection con = null;
     
       public Connection  getConnexion() {
     
     
          // chargement du pilote
          try {
             String pilote = "com.mysql.jdbc.Driver";
             Class.forName(pilote);
          } catch (ClassNotFoundException e) {
              e.printStackTrace();
          }
     
          //connection a la base de données
          try {
            String DBurl="jdbc:mysql://Ipv4/coactivitenew";
            String login="xxx";
            String password="xxx";
            con = DriverManager.getConnection(DBurl,login,password);
            return con;
     
          } catch (SQLException e) {
             e.printStackTrace();
          }
       }
     
       private void closeConn() {
            try {
                 con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    Tu l'utilises en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Connexion connexion = new Connexion();
    Connection  conn = connexion.getConnexion();
    ...
    utilisation avec des Statements
    ...
    connexion.closeConn();
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  2. #182
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Merci bcp pour cette réponse plus que complète !

    Juste pour être bien familier avec le terme de méthode "factory", tu entends par là la construction de la connexion ?
    il faut nécessairement passer par un constructeur de toute manière non ?

    Sinon je rencontre une difficulté au niveau de la ligne 7:
    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
    package appliconnexion;
    import java.sql.*;
     
    public class Connexion {
        Connection con = null;
     
        public Connection getConnexion() {
     
        // chargement du pilote
        try {
             String pilote = "com.mysql.jdbc.Driver";
             Class.forName(pilote);
        } catch (ClassNotFoundException e) {
              e.printStackTrace();
        }
     
        //connection a la base de données
        try {
            String DBurl="jdbc:mysql://Ipv4/coactivitenew";
            String login="xxx";
            String password="xxx";
            con = DriverManager.getConnection(DBurl,login,password);
            return con;
        } catch (SQLException e) {
            e.printStackTrace();
        }
     
       }
     
       private void closeConn() {
            try {
                 con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    Je suppose que c'est parce qu'il n'y a pas de main ?

    résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    debug:
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_25\jre\lib\sunrsasign.jar
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_25\jre\lib\modules\jdk.boot.jar
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_25\jre\classes
    java.lang.NoSuchMethodError: main
    Exception in thread "main" Java Result: 1
    BUILD SUCCESSFUL (total time: 1 second)

  3. #183
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    il faut nécessairement passer par un constructeur de toute manière non ?
    Ce n'est pas obligatoire, mais tu peux en mettre un systématiquement comme ça tu as toujours la même structure de programmation

    Il faut instancier cette classe dans une autre classe qui possède une classe main pour pourvoir la tester
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #184
    Membre actif
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 178
    Points : 274
    Points
    274
    Par défaut
    Hum Java 6? Dommage car tu pourrais avoir une connection closeable qui te faciliterait bien la vie.

  5. #185
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Mon pc ressemble à un sapin de Noël lol

    ma class Main :
    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
     
    package appliconnexion2;
     
    public class Main {
     
        public static void main(String[] args) {
            Connexion connexion = new Connexion();
            Connection conn = connexion.getConnexion();
     
            Statement stmt  = conn.createStatement();
            resultats = stmt.executeQuery("SELECT * FROM persons");
     
            System.out.println("parcours des données retournées");
     
            boolean encore  = resultats.next();
            while (encore) {
                System.out.print(resultats.getInt(1) + " :  " + resultats.getString(2) +
                " " + resultats.getString(3) + "(" + resultats.getDate(4) + ")");
                System.out.println();
                encore = resultats.next();
     
                resultats.close();
            }
            connexion.closeConn();
        }
    }
    Connection, Statement et resultats ==> Cannot find symbol
    Je dois importer une librairie ?

    Ma class connexion :
    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
    package appliconnexion2;
    import java.sql.*;
     
    public class Connexion {
        Connection con = null;
     
        public Connection getConnexion() {
     
        // chargement du pilote
        try {
             String pilote = "com.mysql.jdbc.Driver";
             Class.forName(pilote);
        } catch (ClassNotFoundException e) {
              e.printStackTrace();
        }
     
        //connection a la base de données
        try {
            String DBurl="jdbc:mysql://Ipv4/coactivitenew";
            String login="xxx";
            String password="xxx";
            con = DriverManager.getConnection(DBurl,login,password);
            return con;
        } catch (SQLException e) {
            e.printStackTrace();
        }
     
       }
     
       public void closeConn() {
            try {
                 con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    Ligne 7 : missing return statement
    Je pense que c'est de sa faute que tout le reste clignote

  6. #186
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Dans ta méthode main, resultats.close(); est dans la boucle while !!!!!
    mets-le après la ligne 23
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #187
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Ah oui

    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
    package appliconnexion2;
    import java.sql.*;
     
    public class Connexion {
        Connection con = null;
     
        public Connection getConnexion() {
     
        // chargement du pilote
        try {
             String pilote = "com.mysql.jdbc.Driver";
             Class.forName(pilote);
        } catch (ClassNotFoundException e) {
              e.printStackTrace();
        }
     
        //connection a la base de données
        try {
            String DBurl="jdbc:mysql://Ipv4/coactivitenew";
            String login="xxx";
            String password="xxx";
            con = DriverManager.getConnection(DBurl,login,password);
            return con;
        } catch (SQLException e) {
            e.printStackTrace();
        }
     
       }
     
       public void closeConn() {
            try {
                 con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    Néanmoins, il ne reconnait pas plus Connection lol
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    run:
    Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
      symbol:   class Connection
      location: class appliconnexion2.Main
            at appliconnexion2.Main.main(Main.java:8)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)

  8. #188
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Ligne 7 : missing return statement
    Oui car il faut que dans tous les cas ta méthode retourne un objet Connection même s'il est null.

    Donc après chaque traitement d'erreur ex.printStackTrace() et à la fin de la méthode tu dois lui dire de faire un return + objet Connection;

    Mon pc ressemble à un sapin de Noël
    c'est pas la saison
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  9. #189
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Ah ca va déjà un peu mieux, les pompiers sont passés

    Me reste cette histoire de Connection qui n'est pas reconnu ! (cannot find symbol)
    Je dois import une lib dans le main non ?

  10. #190
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    cette histoire de Connection qui n'est pas reconn
    Kannst du vieleicht den Stack Error endlich posten ??? (*)

    Comme en français, ça ne passe toujours pas, je le dis en allemand ...

    (*) est-ce que oui ou non tu vas poster la Stack Trace ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  11. #191
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Ben c'est la même chose que le #187

    Je peux le remettre si tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    run:
    Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
      symbol:   class Connection
      location: class appliconnexion2.Main
            at appliconnexion2.Main.main(Main.java:8)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)
    En fait il ne lance même pas l'appli, même en CTRL+F5 car il se stop direct sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Connection conn = connexion.getConnexion();
    Sie dachten, mich mit Ihrer deutschen lol stecken? Danke Übersetzung Google*
    (*) tu pensais me coincer avec ton allemand lol ? Merci google Traduction

  12. #192
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Ah c'est bon, il ne me manquait que l'import de java.sql.*;

    Je suis sur cette erreur maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    debug:
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_25\jre\lib\sunrsasign.jar
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_25\jre\lib\modules\jdk.boot.jar
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_25\jre\classes
    Erreur de connexion à la base de données!
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
     
    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
     
    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    Pourtant je n'ai aucune erreur répertorié par NB...
    Est ce que cela pourrait se traduire par "Ton code est bon mais t'as une erreur de connexion du genre mauvaise IP ?"

    Je remet tout de même le code de la classe connexion
    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
     
    package appliconnexion2;
    import java.sql.*;
     
    public class Connexion {
        Connection con = null;
     
        public Connection getConnexion() {
            // chargement du pilote
            try {
                 String pilote = "com.mysql.jdbc.Driver";
                 Class.forName(pilote);
            } catch (ClassNotFoundException e) {
                  e.printStackTrace();
            }
     
            //connection a la base de données
            try {
                String DBurl="jdbc:mysql://IPv4/coactivitenew";
                String login="xxx";
                String password="xxx";
                con = DriverManager.getConnection(DBurl,login,password);
                java.util.Properties prop = new java.util.Properties();
                prop.put("charSet", "ISO-8859-1");
                con.setClientInfo(prop);
     
                return con;
            } catch (SQLException e) {
                System.err.println("Erreur de connexion à la base de données!");
                System.err.println(e);
                e.printStackTrace();
                return con;
            }
        }
     
       public void closeConn() {
            try {
                 con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    Et celui de mon main :
    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
     
    package appliconnexion2;
    import java.sql.*;
     
    public class Main {
     
        public static void main(String[] args) {
            try {
                Connexion connexion = new Connexion();
                Connection conn = connexion.getConnexion();
                Statement stmt = conn.createStatement();
     
                System.out.println("parcours des données retournées");
                ResultSet resultats = stmt.executeQuery("SELECT * FROM persons");
                boolean encore  = resultats.next();
                while (encore) {
                    System.out.print(resultats.getInt(1) + " :  " + resultats.getString(2) +
                    " " + resultats.getString(3) + "(" + resultats.getString(4) + ")");
                    System.out.println();
                    encore = resultats.next();
                }
                resultats.close();
                connexion.closeConn();
            } catch (SQLException e ) {
                e.printStackTrace();
            }
        }
     
    }

  13. #193
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Mets un point d'arrêt sur la ligne 10 de le classe Main en faisant un clic sur le chiffre "10" dans la marge de gauche.
    Ta ligne doit passer en rouge

    Lance la classe en faisant Ctrl+Maj+F5
    puis ligne à ligne en appuyant sur F7 et dis-moi sur quelle ligne tu as l'erreur de connexion
    en bonne logique cela devrait être dans la classe Connexion
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  14. #194
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    C'est ok, j'étais persuadé d'avoir changé l'IP hier...
    Ce n'étais que cette IP qui était mauvaise... merci quand même !

    Je passe maintenant à l'intégration de ma classe Connexion dans l'application ?

  15. #195
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Je passe maintenant à l'intégration de ma classe Connexion dans l'application ?
    Est-ce cette classe ne servait qu'à obtenir une connexion ou bien faisait-elle autre chose ?
    Poste le code de l'ancienne classe pour voir s'il n'y avait pas d'autres bricolages ...
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  16. #196
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    J'ai mal à la tête quand je vois cette classe, je suis obligé ? ^^

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    /**
     
    package coactivite2;
     
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.sql.*;
     
    public class Connexion {
     
        public static Connection conn;
        public static String query;
        public static Statement stmt;
        public static ResultSet res;
        public static ResultSetMetaData metaBase;
     
        public Connexion()
        {
            String url = null;
            try
            {
                String fichier = "xxx/connexion.xml";
                FileInputStream ips = new FileInputStream(fichier);
                InputStreamReader ipsr = new InputStreamReader(ips);
                BufferedReader br = new BufferedReader(ipsr);
                url = br.readLine();
                br.close();
            }
            catch (Exception e)
            {
                System.out.println(e.toString());
            }
     
            try
            {
                /*Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                String url2 = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+url+";UID=xxx;PWD=xxx";
                java.util.Properties prop = new java.util.Properties();
                prop.put("charSet", "ISO-8859-1");
                con = DriverManager.getConnection(url2, prop);
                System.out.println("Connexion établie avec succès");
                stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);*/
     
     
     
                /********************** UCanAccess *********************
                Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
                System.out.println("UcanaccessDriver chargé avec succès");
     
                String url= "jdbc:ucanaccess://C:/Users/Spiicky/Desktop/CoActiviteNew.mdb";
                System.out.println(url);
     
                Connection con = DriverManager.getConnection(url,"xxx","xxx");
                System.out.println("Connexion établie avec succès");
     
    //            java.util.Properties prop = new java.util.Properties();
    //            prop.put("charSet", "ISO-8859-1");
    //            con.setClientInfo(prop);
    //            System.out.println("charSet ajouté avec succès");
                ********************* UCanAccess **********************/
                String pilote = "com.mysql.jdbc.Driver";
                Class.forName(pilote);
     
                //System.out.println(System.getProperty("user.name"));
     
                conn = DriverManager.getConnection("jdbc:mysql://IPv4/coactivitenew","xxx","xxx");
                //System.out.println("getConnection récupérée avec succès");
     
                stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
                //System.out.println("Statement créé avec succès");
     
                java.util.Properties prop = new java.util.Properties();
                prop.put("charSet", "ISO-8859-1");
                conn.setClientInfo(prop);
                //System.out.println("charSet ajouté avec succès");
     
                /*String sql = "Select * From plagehoraire";
                ResultSet rs = stmt.executeQuery(sql); 
                while(rs.next()){
                    System.out.println("\n"+rs.getString("IdPlage")+rs.getString(1)+"\t"+rs.getString(2));
                }*/
            }
            catch (ClassNotFoundException ex) { 
                System.err.println("Base de données non trouvée!");
                System.err.println(ex);
            }
            catch (SQLException ex) {
                System.err.println("Erreur de connexion à la base de données!");
                System.err.println(ex);
            }
         }
     
        public static ResultSet rechercher(String query)
        {
            try
            {
                res=stmt.executeQuery(query);
                System.out.println("Element trouvé");
            }
            catch (SQLException ex)
            {
                System.err.println(ex);
            }
     
            return res;
         }
     
        public static void ajouter(String query)
        {
            try
            {
                stmt.executeUpdate(query);
                System.out.println("Element ajouté à la base");
            }
            catch (SQLException e)
            {
                System.err.println(e.getMessage());
            }
        }
     
        public static void modifier(String query)
        {
            try
            {
            stmt.executeUpdate(query);
            System.out.println("Element Modifié");
            }
            catch (SQLException ex)
            {
                System.err.println(ex);
            }
        }
     
        public static void supprimer(String query)
        {
            try
            {
            stmt.executeUpdate(query);
            System.out.println("Element suprimé");
            }
            catch (SQLException ex)
            {
                System.err.println(ex);
            }
        }
     
        public static void fermer()
        {
            try
            {
                res.close();
                System.out.println("Base de données Fermée");
            }
            catch (SQLException e)
            {
                System.out.println(e.getMessage());
            }        
        }
    }

  17. #197
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    J'ai mal à la tête quand je vois cette classe, je suis obligé ?
    ça fait partie de la thérapie
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  18. #198
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    C'est bien ce que je craignais :
    Le précédent développeur avait créé cette classe utilitaire pour pouvoir réduire le code au maximum.
    Il a refait les ajout/recherche/maj/suppression en les encapsulant dans des méthodes.
    Du coup, il maintenait la base Access ouverte tout le temps avec un risque d'incohérence en cas de fermeture accidentelle de l'appli Java.

    Si on reprend cette façon de faire, il faut modifier les méthodes :
    rechercher : ouvrir la connexion juste avant avec getCon() et laisser la fermeture au soin du code métier
    ajouter, modifier, supprimer : systématiquement ouvrir la connexion avant et la refermer après le executeUpdate

    C'est un peu bidouilleux et pas clair quand tu relis le code des semaines après, on ne comprend plus rien.

    on va voir l'étendu des dégâts :
    pose le curseur sur la méthode ajouter de cette classe Connexion et fait Alt+F7
    Nb te donneras tous les endroits de l'application où la méthode est utilisée.
    Regarde combien de fois c'est utilisé et on va prendre une décision.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  19. #199
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    T'es un super modérateur dis donc ! ==> réponse Aujourd'hui à 12h29

    Non mais faut manger aussi hein !

  20. #200
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Citation Envoyé par Spiicky Voir le message
    Non mais faut manger aussi hein !
    Manger ? tu parles du truc qui fait grossir ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

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

Discussions similaires

  1. ListView qui change de taille mais n'affiche pas le contenu d'une ObservableCollection
    Par Atellane dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 14/08/2014, 11h46
  2. DataGrid n'affiche pas le contenu de certaines colonnes d'un Datatable
    Par alucia dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 20/09/2013, 14h39
  3. .load qui n'affiche pas le contenu de la page
    Par tonydu91 dans le forum jQuery
    Réponses: 4
    Dernier message: 07/04/2013, 00h58
  4. [SimpleXML] Problème avec simpleXML : il n'affiche pas le contenu de mon élément
    Par ploxien dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 05/05/2007, 20h43
  5. GUI Java par netbeans - ne s'affiche pas
    Par G_angel dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 31/01/2007, 12h38

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