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

Resuelto
rapidegoyes Mensajes publicados 3 Fecha de registro   Estado Miembro Última intervención   -  
rapidegoyes Mensajes publicados 3 Fecha de registro   Estado Miembro Última intervención   -
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. jordane45 Mensajes publicados 30427 Fecha de registro   Estado Moderador Última intervención   4 832
     
    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
  2. rapidegoyes Mensajes publicados 3 Fecha de registro   Estado Miembro Última intervención   13
     
    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
    1. jordane45 Mensajes publicados 30427 Fecha de registro   Estado Moderador Última intervención   4 832
       
      ¿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?
      0
  3. rapidegoyes Mensajes publicados 3 Fecha de registro   Estado Miembro Última intervención   13
     
    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
  4. rapidegoyes Mensajes publicados 3 Fecha de registro   Estado Miembro Última intervención   13
     
    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
  5. rapidegoyes Mensajes publicados 3 Fecha de registro   Estado Miembro Última intervención   13
     
    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
    1