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

Développement Web en Java Discussion :

Utilisation d'une classe connexion pour MySQL


Sujet :

Développement Web en Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut Utilisation d'une classe connexion pour MySQL
    Bonjour,

    Je débute en JAVA, j'essaie d'utiliser une classe connexion pour me connecter à mysql mais je n'y arrive pas.

    Pouvez-vous me donner juste un petit exemple d'utilisation de cette classe par exemple avec une requête basique du genre SELECT * FROM maTable.

    Voici la classe :

    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
    import java.sql.*;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    public class Connexion {
     
        private static Statement st;
        private static Connection con = null;
        private static PreparedStatement pt;
     
        public static Connection get() {
            if (con == null) {
                String driver = "com.mysql.jdbc.Driver";
                try {
                    Class.forName(driver).newInstance();
                    try{
     
                        con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/...", "...", "...");
                    }catch(SQLException ex){
     
                        System.out.println("SQLException: "+ex.getMessage());
                        System.out.println("SQLState: "+ex.getSQLState());
                        System.out.println("VendorError: "+ex.getErrorCode());
                    }
                }catch (ClassNotFoundException cnfe) {
                    System.out.println("La classe " + driver + " n'a pas été trouvée");
                } catch (InstantiationException ex) {
                    Logger.getLogger(Connexion.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IllegalAccessException ex) {
                    Logger.getLogger(Connexion.class.getName()).log(Level.SEVERE, null, ex);
                }
     
            }
            return con;
        }
     
        public static Statement getStatement() throws SQLException {
            st = get().createStatement();
     
            return st;
        }
     
        public static PreparedStatement prepareStatement(String query, int i) {
            try {
                pt = get().prepareStatement(query, i);
     
            } catch (SQLException ex) {
                Logger.getLogger(Connexion.class.getName()).log(Level.SEVERE, null, ex);
            }
            return pt;
        }
     
    }
    Merci d'avance !

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    Bonjour,
    voici un exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Statement stmt = connexion.createStatement();
    ResultSet resultat = stmt.executeQuery("select * from MATABLE");
    while (resultat.next())
    		{
    			String nom = resultat.getString(1); //1ère colonne
    			int age = resultat.getInt(2); //2e colonne
    			System.out.println(nom+" : "+age);
    		}

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    Merci pour la réponse,

    J'ai essayer de faire une requête lors du clic sur un bouton et j'ai toujours la même erreur ... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException: Not yet implemented
    	at connexion.createStatement(connexion.java:63)
    	at newUser.buttonTestActionPerformed(newUser.java:482)
     
    etc ...
    et voici mon code lors du clic :

    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
    private void buttonTestActionPerformed(java.awt.event.ActionEvent evt) {
            Statement stmt = connexion.createStatement();
            ResultSet resultat = null;
            try {
                resultat = stmt.executeQuery("select nom from UTILISATEUR");
            } catch (SQLException ex) {
                Logger.getLogger(newUser.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                while (resultat.next()) {
                    String nom = resultat.getString(1); //1ère colonne
                    System.out.println(nom);
                }
            } catch (SQLException ex) {
                Logger.getLogger(newUser.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    Merci d'avance.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    Visiblement tu as un problème sur ta connexion vu que ça plante dès le createStatement.
    As-tu bien récupéré dans tes librairies le fichier jar de mySql ?
    En debug, ton objet connexion est-il bien alimenté ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    ça passe en mettant getStatement au lieu de createStatement en fait ! donc ça c'est bon. Merci

    Par contre pour une requête préparée je fais la même chose et j'ai une erreur sur prepareStatement(query) ??

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Statement stmt = connexion.getStatement();
                String query = "INSERT INTO UTILISATEUR (nom, prenom, login, mdp, mail, id_type_utilisateur) VALUES (?,?,?,?,?,?);" ;
                PreparedStatement resultat = stmt.prepareStatement(query);
                resultat.setString(1, nom);
                resultat.setString(2, prenom);
                resultat.setString(3, login);
                resultat.setString(4, motDePasse);
                resultat.setString(5, mail);
                resultat.setString(6, typeUser);
                resultat.executeUpdate();

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static PreparedStatement prepareStatement(String query, int i)
    Dans la classe connexion à quoi correspond int i ?? c'est peut-être ça qui bloque.

    Merci d'avance.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String query = "INSERT INTO UTILISATEUR (nom, prenom, login, mdp, mail, id_type_utilisateur) VALUES (?,?,?,?,?,?);" ;
    		PreparedStatement stmt = connexion.prepareStatement(query);
            stmt.setString(1, nom);
            stmt.setString(2, prenom);
            stmt.setString(3, login);
            stmt.setString(4, motDePasse);
            stmt.setString(5, mail);
            stmt.setString(6, typeUser);
            stmt.executeUpdate();

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    Merci pour la réponse,

    ça fonctionne merci, mais en rajoutant un "1" dans les paramètres de la méthode prepareStatement() :

    comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PreparedStatement stmt = connexion.prepareStatement(query,1);
    Savez-vous à quoi cela correspond ??

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/02/2010, 15h47
  2. [C#2005] Créer une classe Connexion pour Business Objects
    Par Herlece dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/08/2008, 23h16
  3. Réponses: 9
    Dernier message: 25/06/2008, 16h42
  4. [MySQL] Modification d'une classe requêtant pour MySQL
    Par gimpycpu dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/03/2008, 00h16
  5. Réponses: 2
    Dernier message: 30/05/2006, 15h26

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