cs_Stoufy1605
Messages postés61Date d'inscriptionvendredi 7 janvier 2011StatutMembreDernière intervention17 avril 2013
-
12 août 2012 à 23:23
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020
-
13 août 2012 à 14:10
Bonjour à toute la communauté de code source, voilà, je développe un projet pour les cours, cela fait plusieurs semaines que je suis occupé à le coder, et là je sèche un petit peu. Ce programme doit interagir avec une base de données pour les opérations standarts ( create,update, delete, show, cependant, je n'arrive pas à trouver l'erreur du code. La connexion à la bdd se passe très bien lorsque je les intègre manuellement, mais lorsque j'essaye de récupéré les informations de mon formulaire (fait avec des JTextField), et les evoyer ensuite vers ma base de données, ccela bloque, mais où et quoi?? ------)mystère.
classe de la fenêtre (partie swing):
fenetre.getContentPane().add(btnBb);
nouvelArticle.setClosable(true);
nouvelArticle.setMaximizable(true);
nouvelArticle.setIconifiable(true);
nouvelArticle.setBounds(10, 11, 286, 238);
nouvelArticle.getContentPane().setLayout(null);
titre2 = new JTextField();
titre2.setBounds(108, 25, 86, 20);
nouvelArticle.getContentPane().add(titre2);
titre2.setColumns(10);
date2 = new JTextField();
date2.setBounds(108, 61, 86, 20);
nouvelArticle.getContentPane().add(date2);
date2.setColumns(10);
fichier2 = new JTextField();
fichier2.setBounds(108, 92, 86, 20);
nouvelArticle.getContentPane().add(fichier2);
fichier2.setColumns(10);
auteur2 = new JTextField();
auteur2.setBounds(108, 123, 86, 20);
nouvelArticle.getContentPane().add(auteur2);
auteur2.setColumns(10);
JButton confirmerArticle = new JButton("Confirmer");
confirmerArticle.setBounds(171, 175, 89, 23);
nouvelArticle.getContentPane().add(confirmerArticle);
confirmerArticle.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String titre = titre2.getText();
String fichier= fichier2.getText();
String auteur= auteur2.getText();
String date = date2.getText();
DAOArticle confirmerLArticle= new DAOArticle(titre, fichier, auteur,date);
Article obj = null;
confirmerLArticle.create(obj);
}
classe DAO connexion:
public class DAOConnexion{
/*
* Singleton de connexion
*
*
*
*/
private String url = "jdbc:postgresql://localhost:5432/GestionJournal";
private String user = "postgres";
private String passwd = "190707190707";
private static Connection connexion = null;
//Class.forName("org.postgresql.Driver");
// l'objet est static : il n'en n'existe donc qu'un seul exemplaire, quelque soit le nombre d'objet de la classe.
private DAOConnexion(){
//le constructeur fait la connexion, mais il n'est accessible qu'en interne
try {
connexion = DriverManager.getConnection(url, user, passwd);
//connexion = DriverManager.getConnection(url);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnexion(){
//l'instanciation active le constructeur
if(connexion == null){
new DAOConnexion();
}
return connexion;
}
}
classe DAO Article :
Code Java :
public boolean create(Article obj) {
boolean reponse=false;
try {
Statement state = this.connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//Statement state = this.connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
// Lorsque j'exécute cette requête cela fonctionne très bien :
//String requete = "INSERT INTO article(titre, fichier,date,id,auteur) VALUES('fdfsdgsd','dfsdfsd','cvvdssdv',3,'dfsdfsdf')";
//Lorsque j'execute celle-ci, plus rien ne fonctionne
String requete = "INSERT INTO article(titre, fichier, date,auteur) VALUES('"+obj.getTitre()+"', '"+obj.getFichier()+"', '"+obj.getAuteur()+"', '"+obj.getDate()+"');";
reponse = state.execute(requete);
}
catch (SQLException e) {
e.printStackTrace();
}
return reponse;
}
classe POJO aticle
public class Article {
private String titre="";
private String date="";
private String fichier="";
private String auteur="";
private int id=0;
private static DAOArticle dao = new DAOArticle();
public Article (String titre, String string, String string2, String requete, int i){
this.id= id;
this.titre=titre;
this.date=date;
this.fichier=fichier;
this.auteur=auteur;
this.dao.create(this);
}
public void setTitre(String titre){
this.titre=titre;
this.dao.update(this);
}
public String getTitre(){
return this.titre;
}
public int getId(){
return this.id;
}
public String getAuteur(){
return this.auteur;
}
public void setAuteur(String auteur)
{
this.auteur=auteur;
this.dao.update(this);
}
public String getFichier(){
return this.fichier;
}
public void setFichier(String fichier)
{
this.fichier=fichier;
this.dao.update(this);
}
public String getDate(){
return this.date;
}
public void setDate(String date)
{
this.date=date;
this.dao.update(this);
}
public boolean find(String titre,String date, String fichier, int id){
dao.find(id, date, fichier, titre);
return false;
}
}
J'ai mis l'ensemble de mon code concernant l'opération create (pour le reste, je pourrai me débrouiller), cependant je e vois vraimnt pas du tout ou se trouve l'erreur.
Donc pour récapituler :
-la connexion se fait sans problème;
-lorsque j'intègre les informtions manuellemnt (directement dans les requêtes), les informations sont intégré dans la BDD.
-ce qui nne fonctionne pas : récupération des informations dans les JTEXFIELDS et les envoyer dans la BDD
Je seche completement HELP.
L'erreur est la suivante :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at be.steve.DAO.DAOArticle.create(DAOArticle.java:40)
at interfaceGraphique.fenetre$7.actionPerformed(fenetre.java:211)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
J'ai fait des requêtes "test", à e niveau cela fonctionne à merveille, mais dès que j souhaite récupéré les valeurs des JTextfield, l'erreur se passe