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:
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:
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 |
rereur au nombre de lignes de ma BDD
Citation:
Envoyé par
tsuji
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:
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:
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
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