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 :

Mes données ne s'enregistrent pas dans la base de données


Sujet :

JDBC Java

  1. #1
    Membre à l'essai Avatar de REDBAR
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 19
    Points
    19
    Par défaut Mes données ne s'enregistrent pas dans la base de données
    Bonjour à tous
    J'ai un soucis avec la ma base de données
    Voici mon code de connection
    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
     
    public class MaConnection {
     
        private static final String URL = "jdbc:mysql://localhost/negoceflow";
        private static final String USER = "root";
        private static final String PASSWORD = "";
     
        //Objet Connection
        private static Connection connect;
     
        //Méthode qui va nous retourner notre instance et la créer si elle n'existe pas
        public static Connection getInstance() {
            if (connect == null) {
                try {
     
                    Class.forName("com.mysql.jdbc.Driver");
                    connect = DriverManager.getConnection(URL, USER, PASSWORD);
                    System.out.println("Connexion établie");
                } catch (SQLException e) {
                    JOptionPane.showMessageDialog(null, e.getMessage(), "ERREUR DE CONNEXION !", JOptionPane.ERROR_MESSAGE);
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(MaConnection.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            return connect;
        }
    }
    voici le code qui me permet d’insérer les données dans la table client de ma base de données
    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
     
    private void ajouterButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
     
           String nomclient = nomClientTextField.getText();
            String telephoneclient = telephoneTextField.getText();
            String numerocniclient = numeroCniTextField.getText();
            String email = emailTextField.getText();
            String rue = rueTextField.getText();
            String pays = paysTextField.getText();
            String ville = villeTextField.getText();
     
     
            try {
                System.out.println(" LA VALEUR DES CHAMPS : "
                        + "ville: " + ville + " "
                        + " Client : " + nomclient + " "
                        + " Tel : " + telephoneclient + ""
                        + " CNI : " + numerocniclient + " "
                        + "Email : " + email + " "
                        + "Rue :" + rue + " !!!");
     
     
                reqInst = "INSERT INTO client(nom_client, numero_cni_client, telephone_client, pays, ville, rue,email)"
                        + "VALUES('" + nomclient + "','" + numerocniclient + "','" + telephoneclient + "','" + email + "','" + pays + "','" + ville + "','" + rue + "')";
     
                Statement state = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                int ResultInsertcli = state.executeUpdate(reqInst);
                state.close();
     
                if (ResultInsertcli != 0) {
                    JOptionPane.showMessageDialog(null, "Enregistrement effectué avec succès.");
                    effacerChamp();
                }
     
            } catch (SQLException e) {
                e.printStackTrace();
            }
     
     
        }
    Mon souci est que au niveau de netBeans tout fonctionne bien Mais lorsque je regarde dans la table client il n'y a pas de données.
    Curieusement quand je met manuellement des données dans la table le ID de la table s’incrémente en prenant en compte le nombre de fois que j'ai envoyé des données à la table.
    J'ai besoin de votre aide
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    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 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Pour commencer :
    1) "Connexion établie" s'affiche bien ?
    2) as-tu des erreurs suite à e.printStackTrace()
    3) quel type de clé primaire utilises-tu ?

    Après ces quelques vérifications, on verra qu'il vaut mieux utiliser un PreparedStatement

    [EDIT]
    et puis aussi, utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Statement state = con.createStatement();
    les options que tu avais mises servent pour avoir un ResultSet ce qui n'est pas le cas d'une insertion
    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/

  3. #3
    Membre à l'essai Avatar de REDBAR
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    R-1: "Connexion établie " s'affiche bien


    R-2: je n'ai pas d'erreur suite e.printStackTrace()

    R-3: j'utilise une clé primaire Auto-Incremente avec le type BigInt (j'espère que j'ai bien répondu à la question)


    Et voici le code avec PrepareStatement mais ça n'enregistre pas toujours dans la base de données.

    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
     
     private void ajouterButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
     
            String nomclient = nomClientTextField.getText();
            String telephoneclient = telephoneTextField.getText();
            String numerocniclient = numeroCniTextField.getText();
            String email = emailTextField.getText();
            String rue = rueTextField.getText();
            String pays = paysTextField.getText();
            String ville = villeTextField.getText();
     
            try {
                System.out.println(" LE RESULTAT : "
                        + "ville: " + ville + " "
                        + " Client : " + nomclient + " "
                        + " Tel : " + telephoneclient + ""
                        + " CNI : " + numerocniclient + " "
                        + "Email : " + email + " "
                        + "Rue :" + rue + " !!!");
                String requeteInsertion = "insert into client(nom_client, numero_cni_client, telephone_client, pays, ville, rue,email) values(?, ?, ?, ?, ?, ?, ?)";
     
                PreparedStatement prepare = con.prepareStatement(requeteInsertion);
                prepare.setString(1, nomclient);
                prepare.setString(2, numerocniclient);
                prepare.setString(3, telephoneclient);
                prepare.setString(4, pays);
                prepare.setString(5, ville);
                prepare.setString(6, rue);
                prepare.setString(7, email);
     
                int validClient = prepare.executeUpdate();
     
                if (validClient != 0) {
                    JOptionPane.showMessageDialog(null, "Enregistrement effectué avec succès.");
     
                    effacerChamp();
                }
     
            } catch (SQLException e) {
                e.printStackTrace();
            }
     
        }

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    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 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Très bien le PreparedStatement car cela évacue le problème des guillemets dans les champs textes.

    Essaye déjà en ajoutant la fermeture de la connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                int validClient = prepare.executeUpdate();
     
                if (validClient != 0) {
                    JOptionPane.showMessageDialog(null, "Enregistrement effectué avec succès.");
     
                    effacerChamp();
                }
                con.close();

    Sinon, est-ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JOptionPane.showMessageDialog(null, "Enregistrement effectué avec succès.");
    affiche la boîte de dialogue ?
    Il est à noter que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int validClient = prepare.executeUpdate();
    ne marche pas forcément à tous les coups.
    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/

  5. #5
    Membre à l'essai Avatar de REDBAR
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    La boite de dialogue s'affiche bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JOptionPane.showMessageDialog(null, "Enregistrement effectué avec succès.");
    et la méthode effacerChamp() fonctionne bien egalement

    aussi quand j'ai ajouter
    il y a une exception qui est levée lorsque je tente de faire un deuxième enregistrement.

    Mais toujours est-il que mon probleme demeure

  6. #6
    Membre à l'essai Avatar de REDBAR
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Finalement après avoir enlever ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int validClient = prepare.executeUpdate();
    pour obtenir le code finale que voici
    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
     
    private void ajouterButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
     
            String nomclient = nomClientTextField.getText();
            String telephoneclient = telephoneTextField.getText();
            String numerocniclient = numeroCniTextField.getText();
            String email = emailTextField.getText();
            String rue = rueTextField.getText();
            String pays = paysTextField.getText();
            String ville = villeTextField.getText();
     
            try {
                System.out.println(" LE RESULTAT : "
                        + "ville: " + ville + " "
                        + " Client : " + nomclient + " "
                        + " Tel : " + telephoneclient + ""
                        + " CNI : " + numerocniclient + " "
                        + "Email : " + email + " "
                        + "Rue :" + rue + " !!!");
                String requeteInsertion = "insert into client(nom_client, numero_cni_client, telephone_client, pays, ville, rue,email) values(?, ?, ?, ?, ?, ?, ?)";
     
                PreparedStatement prepare = con.prepareStatement(requeteInsertion);
                prepare.setString(1, nomclient);
                prepare.setString(2, numerocniclient);
                prepare.setString(3, telephoneclient);
                prepare.setString(4, pays);
                prepare.setString(5, ville);
                prepare.setString(6, rue);
                prepare.setString(7, email);
                prepare.executeUpdate();
     
                    JOptionPane.showMessageDialog(null, "Enregistrement effectué avec succès.");
                    effacerChamp();
     
            } catch (SQLException e) {
                e.printStackTrace();
            }
     
        }
    Tout fonctionne bien.
    Les données s'enregistre bien dans la base de données
    MERCI enormement Népomucène

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2012, 14h09
  2. Réponses: 4
    Dernier message: 21/06/2012, 23h23
  3. Réponses: 14
    Dernier message: 23/05/2008, 15h10
  4. Afficher une liste qui n'existe pas dans la base de données.
    Par Zvetch dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 25/09/2007, 13h23
  5. Réponses: 10
    Dernier message: 14/02/2007, 12h03

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