Número de columnas de BBDD fuera de límite

Resuelto
Hola,
Estoy codificando un pequeño programa con NetBeans Java y Postgres en pgAdmin3.

Tengo una tabla con 5 columnas (id, Nombre, Apellido, Teléfono, Correo).

La conexión está funcionando, pero la aplicación se bloquea con el siguiente mensaje de error:

org.postgresql.util.PSQLException: El índice de la columna está fuera de límites: 5, número de columnas: 4.

Veo que hay 5 columnas !!!

Por favor, ayúdame, llevo 5 noches trabajando en esto.
Atentamente y gracias.

rapidegoyes

Aquí está mi función:

 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, "consulta ejecutada con éxito");

} catch (SQLException ex)
{
Logger.getLogger(Interface_Utili.class.getName()).log(Level.SEVERE, null, ex);
}
}


Configuración: Windows / Firefox 96.0

5 respuestas

  1. Moderador
    Hola;

    Sabiendo que en tu consulta solo le pasas 4 variables (simbolizadas por signos de interrogación)
    Dudo que el ps.setString(5 sea correcto... Y falta el ps.setString(1

    --
    .
    Cordialmente,
    Jordane
    1. Buenas noches
      gracias por responder

      Ya intenté con 1, entonces el mensaje de error es diferente y es el siguiente:

      org.postgresql.util.PSQLException: ERROR: la columna « nombre » de la relación « informaciones » no existe

      realmente no veo solución

      Gracias por ayudarme cordialmente
      rapidogoyes
      1. Moderador
        ¿Estás seguro de que tu campo en la base de datos se llama "Nom" y no "nom"?
        ¿Podrías mostrarnos la estructura exacta de tu tabla?
    2. Hola
      Gracias por tu apoyo

      Sí, estoy seguro del título de la columna que después de la columna id, es bien Nombre con mayúscula.
      Ahora, ¿cómo puedo mostrar mi tabla que se encuentra en postGres Admin 3?

      cordialmente a +++
      rapidegoyes
      1. Hola jordane45

        Mientras tanto he modificado mi código.
        1) He renombrado mis columnas a minúsculas.
        2) He modificado mi función, ver abajo, poniendo en minúsculas y añadiendo un valor para id delante de los parámetros de puntos de interrogación.
        3) He reinstaurado los números de orden a partir de 1.
        4) Compilar con clean.
        ¡Esta vez los datos se transmiten en las columnas respectivas!

        Mi pregunta, una cosa que no entiendo; para la columna id.
        1) ¿Puede incrementarse automáticamente como en SQLite para Android?
        2) ¿O es necesario llenarla en cada registro?

        Para mi prueba en el código a continuación he añadido el número 1 para ensayo y así los datos se insertan.

        aquí está mi función modificada

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


        gracias por ayudarme
        hasta luego
        rapidego
        1. Buenas noches jordan45 y a todos

          Gracias por tu ayuda,
          He rehecho completamente mi tabla de información
          Acabo de arreglar la autoincrementación en postgres pgAdmin4.
          He añadido una secuencia: en la clave primaria llamada maseq nextval('maseq'::regclass) con tipo de dato bigint.

          Aparentemente funciona todo se incrementa

          De todas formas gracias por tu ayuda y hasta +++
          cordialmente
          rapidegoyes