Erreur de transmission dans ma Base de données

Résolu/Fermé
rapidegoyes Messages postés 92 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 16 octobre 2024 - Modifié le 19 janv. 2022 à 23:39
rapidegoyes Messages postés 92 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 16 octobre 2024 - 22 janv. 2022 à 23:21
Bonjour,

Je m'exerce à coder un petit programme pour répertoire téléphonique avec java, Netbeans et postgres3 pgAdmin3

1)Mon programme se lance avec l'interface.

2) Je rempli mes JTextField c'est bon!

3) Lorsque je clique le bouton enregistrer l'appli plante avec un message aucune données transmises.

4) Ma base et table sont bien établies dans pgAdmin3

5) Remarque dans une précédente application j'avais réussi la transmission des données !

Voici mon code

Merci de bien vouloir m'épauler

cordialement
rapidegoyes


   private void but_EnregistActionPerformed(java.awt.event.ActionEvent evt)                                             
{
try
{
// TODO add your handling code here:
String reg;
reg = "insert into renseignements(Nom, Prenom, N_telephone, email) values (?,?,?,?)";
PreparedStatement ps = maconnexion.getConnexion(). prepareStatement(reg);
String Nom = txt_Nom.getText();
String Prenom = txt_Prenom.getText();
String N_Telephone = txt_Telephon.getText();
String email = txt_Telephon.getText();

ps.setString(2, Nom);
ps.setString(3, Prenom);
ps.setString(4, N_Telephone);
ps.setString(5, email);

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


public class Connection_serv
{
/**
  • 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"; /** * Objet Connection */ private static Connection connect; /** * 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); System.out.println("driver chargé"); } 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





Configuration: Windows / Firefox 96.0
A voir également:

3 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
20 janv. 2022 à 17:07
Bonjour,

reg = "insert into renseignements(Nom, Prenom, N_telephone, email) values (?,?,?,?)";
...
ps.setString(2, Nom);
ps.setString(3, Prenom);
ps.setString(4, N_Telephone);
ps.setString(5, email);

Tu as tout décalé, il faut commencer à 1, pas à 2
0
rapidegoyes Messages postés 92 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 16 octobre 2024 7
Modifié le 20 janv. 2022 à 21:08
Bonsoir KX
merci pour ton aide

J'ai corrigé en commençant par 1 mais l'erreur est toujours la même
Voici le message d'erreur, elle se situe au niveau de la fonction du bouton ligne 174 ci-dessous.
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.
Les données ne sont pas transmises
Merci de m'aider vraiment je ne vois pas.

cordialement à+++
rapidegoyes

voici le message.
Cannot invoke "java.sql.Connection.prepareStatement(String)
" because the return value of "carnet_rep_tel.Connection_serv.getConnexion()" is null

Il me pointe la ligne 174 de la fonction
PreparedStatement ps = maconnexion.getConnexion(). prepareStatement(reg);



Mon fichier : Connexion_serv.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;

//@author rapidegoyes
public class Connection_serv
{
// URL de connection
private static final String url = "jdbc:postgresql://localhost:5432/RepTelephone";
// Nom du user
private static final String user = "postgres";
//Mot de passe du user
private static final String passwd = "dbpass";
// Objet Connection
private static Connection connect;
/**
  • 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); System.out.println("driver chargé"); } 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
0
rapidegoyes Messages postés 92 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 16 octobre 2024 7
22 janv. 2022 à 23:21
Bonsoir
je reviens à la charge

Il me semble que j'ai réussi la transmission des données dans la BDD
mais j'ai toujours un message d'erreur qui est maintenant différent!

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

Pourtant dans pgAdmin3 j'ai bien 5 colonnes comme suit: ( id, Nom, Prenom, Telephone, Courriel).

voici mon nouveau code de 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);
}
}


Merci de me dépanner
rapidegoyes
0