BDD nombre de colonnes hors limite

Résolu
rapidegoyes Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
rapidegoyes Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je code un petit programme avec netbeans java et Postgres sous pgAdmin3.

J'ai une table avec 5 colonnes ( id, Nom, Prenom, Telephone, Courriel).

La connexion se fait, mais l'appli plante avec le message d'erreur suivant:

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

Vu ci-dessus je compte bien 5 colonnes !!!

Je vous prie de bien vouloir m'aider cela fait 5 soirées que je suis dessus
cordialement et merci

rapidegoyes

Voici ma fonction:

 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);
}
}


Configuration: Windows / Firefox 96.0

5 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour;

    Sachant que dans ta requête tu ne lui passes que 4 variables ( symbolisés par des points d'interrogation )
    Je doute que le ps.setString(5 soit bon... Et le manque le ps.setString(1
    1
  2. rapidegoyes Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   13
     
    Bonsoir
    merci de répondre

    J'ai déjà essayé avec 1 alors le message d'erreur est différent comme suit:

    org.postgresql.util.PSQLException: ERREUR: la colonne « nom » de la relation « renseignements » n'existe pas

    vraiment je ne vois pas de solution

    Merci de m'aider cordialement
    rapidegoyes
    1
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Tu es sûr que ton champ en BDD se nomme "Nom" et non pas "nom" ?
      Tu pourrais nous montrer la structure exacte de ta table ?
      0
  3. rapidegoyes Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   13
     
    Bonjour
    Merci de m'épauler

    Oui je suis sûr du de l'intitulé de la colonne qui après la colonne id, c'est bien Nom avec majuscule.
    Maintenant comment faire pour montrer ma table qui se trouve sur postGres Admin 3.

    cordialement à +++
    rapidegoyes
    1
  4. rapidegoyes Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   13
     
    Bonjour jordane45

    Entretemps j'ai modifié mon code.
    1) j'ai renommé mes colonnes avec des minuscules.
    2) j'ai modifié ma fonction voir ci-dessous, en mettant les minuscules et en ajoutant une valeur pour id devant les paramètres points d'interrogations.
    3) j'ai remis les chiffres d'ordre à partir de 1
    4) compiler avec clean .
    Cette fois-ci les données sont transmises dans les colonnes respectives!

    Ma question une chose que je ne comprends pas; pour la colonne id.
    1) Est-ce que celle -ci peut s' incrémentée automatiquement comme dans sqlite android ?
    2) Ou faut-il la remplir à chaque enregistrement ?

    Pour mon essai dans le code ci-dessous j'ai ajouté le chiffre 1 pour essai et là les données sont insérées !

    voici ma fonction modifiée

    private void but_EnregistActionPerformed(java.awt.event.ActionEvent evt)                                             
    {
    try
    {

    String requete = "INSERT INTO renseignements (id, nom, prenom, telephone, courriel)";
    requete+= "VALUES (1, ?,?,?,?);";

    PreparedStatement ps = connect.getInstance().prepareStatement(requete);

    ps.setString(1, txt_Nom.getText());
    ps.setString(2, txt_Prenom.getText());
    ps.setString(3, txt_Telephon.getText());
    ps.setString(4, 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'aider
    à +++
    rapidego
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. rapidegoyes Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   13
     
    Bonsoir jordan45 et tous

    Merci pour ton aide,
    J'ai refais entièrement ma table renseignements
    Je viens d'arranger l'incrémentation automatique dans postgres pgAdmin4.
    J'ai ajouté une séquence: sur la clé primaire nommée maseq nextval('maseq'::regclass) avec type de donnée bigint.

    Apparemment cela fonctionne tout s'incrémente

    En tout cas merci pour ton aide et à +++
    cordialement
    rapidegoyes
    1