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

Java Discussion :

mes données ne sont pas transmise dans la BDD


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut mes données ne sont pas transmise dans la BDD
    Bonjour,

    Je code une petite appli avec java et Netbeans et pgAdmin3
    L'appli se compile sans problème et comme dit se lance avec l'interface.
    Je rempli les textFields et dès que je clique sur le bouton pour enregistrer dans la base ça plante.

    Voici le message d'erreur, elle se situe au niveau de la fonction du bouton ligne 13 ci-dessous.

    because the return value of "carnet_rep_tel.Connection_serv.getConnexion()" is null


    Merci de m'aider vraiment je ne n'arrive pas à trouver l'erreur.

    Mon code
    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
     private void but_EnregistActionPerformed(java.awt.event.ActionEvent evt)                                             
        {                                                 
            try
                {
                 //TODO ajouter votre code de manipulation ici :
                String Nom = txt_Nom.getText();
                String Prenom = txt_Prenom.getText();
                String Telephone = txt_Telephon.getText();
                String Courriel = txt_Mail.getText();
     
                String requete;
                requete = "insert into renseignements(Nom, Prenom, Telephone, Courriel) VALUES (?,?,?,?)";
               PreparedStatement ps = maConnexion.getConnexion(). prepareStatement(requete);
     
                ps.setString(1, Nom);
                ps.setString(2, Prenom);
                ps.setString(3, Telephone);
                ps.setString(4, Courriel);
     
                ps.executeUpdate();
     
                JOptionPane.showMessageDialog(this, "requête exécutée avec succès");
                txt_Nom.setText("");
                txt_Prenom.setText("");
                txt_Telephon.setText("");
                txt_Mail.setText("");
     
                } catch (SQLException ex)
                {
                Logger.getLogger(Interface_Utili.class.getName()).log(Level.SEVERE, null, ex);
                }
        }
    Mon fichier de 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
    44
    45
    package carnet_rep_tel;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import javax.swing.JOptionPane;
     
      //@author rapidego
      public class Connection_serv
    {
        //Objet Connection
       private static Connection connect;  
     
      //URL de connection
      private static String url = "jdbc:postgresql://localhost:5432/RepTelephone";
     
      // Nom du user
      private static String user = "postgres";
       //Mot de passe du user
     
      private static String passwd = "dbpass";
     
     
     
      /**
      * Méthode qui va retourner notre instance
      * et la créer si elle n'existe pas...
      * @return
      */
      public static Connection getInstance(){
        if(connect == null){
          try {
            connect = DriverManager.getConnection(url, user, passwd);
          } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, e.getMessage(), "ERREUR DE CONNEXION !", 
            JOptionPane.ERROR_MESSAGE);
          }
        }		
        return connect;	
      }
     
      Connection getConnexion(){
       return connect; 
      }
    }   //fin de la classe Connection_serv

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    La définition de maConnexion n'est pas clair. Mais en tout cas, la méthode getConnexion() a package-access, et par conséquence maConnexion.getConnexion() ne me semble pas correct.

    Essayez ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //PreparedStatement ps = maConnexion.getConnexion(). prepareStatement(requete);
    PreparedStatement ps = maConnexion.getInstance().prepareStatement(requete);

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut rereur au nombre de lignes de ma BDD
    Citation Envoyé par tsuji Voir le message
    La définition de maConnexion n'est pas clair. Mais en tout cas, la méthode getConnexion() a package-access, et par conséquence maConnexion.getConnexion() ne me semble pas correct.

    Essayez ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //PreparedStatement ps = maConnexion.getConnexion(). prepareStatement(requete);
    PreparedStatement ps = maConnexion.getInstance().prepareStatement(requete);

    Merci de me répondre c'est effectivement la raison de l'échec entre temps j'ai réussi la connection .
    mais maintenant j'ai un autre message comme suit:

    org.postgresql.util.PSQLException: L'indice de la colonne est hors limite : 5, nombre de colonnes : 4.


    Pourtant j'ai 5 colonnes que voici : ( id, Nom, Prenom, Telephone, Courriel)

    voici ma nouvelle fonction:
    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
    private void but_EnregistActionPerformed(java.awt.event.ActionEvent evt)                                             
        {                                                 
            try
                {
     
                String requete = "INSERT INTO renseignements (Nom, Prenom, Telephone, Courriel)";
    				requete+= "VALUES (?,?,?,?);";
     
    				PreparedStatement ps = connect.getInstance().prepareStatement(requete);          
     
                ps.setString(2, txt_Nom.getText());
                ps.setString(3, txt_Prenom.getText());
                ps.setString(4, txt_Telephon.getText());
                ps.setString(5, txt_Mail.getText());
     
                ps.executeUpdate();
     
                JOptionPane.showMessageDialog(this, "requête exécutée avec succès");
     
                } catch (SQLException ex)
                {
                Logger.getLogger(Interface_Utili.class.getName()).log(Level.SEVERE, null, ex);
                }
        }


    Merci de m'épauler car là je plante
    cordialement
    rapidego

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 608
    Points
    21 608
    Par défaut
    Hello,

    les 2, 3, 4 et 5 dans les

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ps.setString(2, txt_Nom.getText());
    ps.setString(3, txt_Prenom.getText());
    ps.setString(4, txt_Telephon.getText());
    ps.setString(5, txt_Mail.getText());
    Sont censés indiquer par quoi remplacer les ? dans la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String requete = "INSERT INTO renseignements (Nom, Prenom, Telephone, Courriel)";
    requete+= "VALUES (?,?,?,?);";
    Il y a 4 ? et non pas 5. Et il ne risque pas de comprendre pourquoi ça commence par 2.
    Contrairement aux index de tableaux, ici l'index commence par 1.

    Il faut donc bien entendu utiliser 1 pour le premier ?, 2 pour le second ?, et ainsi de suite.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut cnnection résolue et incrémentation automatique
    Bonsoir thelvin,
    Merci pour ton aide j'ai suivi tes conseils.

    La connexion se réalise maintenant avec PreparedStatement ps = connect.getInstance().prepareStatement(requete);

    J'ai également établi une incrémentation automatique en ajoutant une séquence nommée "maseq" avec la value nextval('maseq'::regclass).

    J'ai refais entièrement ma table en nommant les colonnes avec des minuscules.

    cordialement à plus
    rapidego

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/03/2009, 15h11
  2. mes _FK ne sont pas persistés dans ma base oracle
    Par mickael.guilbert dans le forum JPA
    Réponses: 4
    Dernier message: 08/02/2008, 11h01
  3. Réponses: 26
    Dernier message: 05/02/2007, 16h57
  4. Réponses: 7
    Dernier message: 22/09/2006, 01h28

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