Projet [Résolu]

Messages postés
61
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
17 avril 2013
- - Dernière réponse : cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 16 août 2012 à 14:31
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 :
  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);
            	            	            	
            	//String requete = "INSERT INTO article(titre, fichier,date,id,auteur) VALUES('"+obj.getTitre()+"','"+obj.getFichier()+"',"+obj.getAuteur()+")";//rajouter variables
            	//String requete = "INSERT INTO article(titre, fichier,date,id,auteur) VALUES('fdfsdgsd','dfsdfsd','cvvdssdv',3,'dfsdfsdf')";
            	String requete = "INSERT INTO article(id, titre,fichier, auteur,date) VALUES('"+obj.getId()+"','"+obj.getTitre()+"','"+obj.getFichier()+"',"+obj.getAuteur()+"'"+obj.getDate()+"')";
            	System.out.println(requete);

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.
Afficher la suite 

16 réponses

Meilleure réponse
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248
3
Merci
Salut,

Tu as quelques erreurs dans ta requête :

String requete = "INSERT INTO article(id, titre, fichier, auteur, date) VALUES('"+obj.getId()+"', '"+obj.getTitre()+"', '"+obj.getFichier()+"', '"+obj.getAuteur()+"', '"+obj.getDate()+"');";

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
61
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
17 avril 2013
1
3
Merci
Bonjour, excuse moi du retard, le message de réponse a été dans mes courriers indésirables. J'ai fait le changement de ma requête, effectivement il y avait une erreur, cependant, cela ne fonctionne toujours pas, il y a donc une seconde erreur, peux-tu m'éclairer???

Merci d'avance.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Stoufy1605
Messages postés
61
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
17 avril 2013
1
3
Merci
pour être exact 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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Stoufy1605
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248
3
Merci
Peux tu me copier la ligne qui lève cette exception ?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
61
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
17 avril 2013
1
3
Merci
Bien sûr!!! Merci bcp pour ta réponse, la voici :

at be.steve.DAO.DAOArticle.create(DAOArticle.java:40)=
            	String requete = "INSERT INTO article(titre, fichier, date,auteur) VALUES('"+obj.getTitre()+"', '"+obj.getFichier()+"', '"+obj.getAuteur()+"', '"+obj.getDate()+"');";


at interfaceGraphique.fenetre$7.actionPerformed(fenetre.java:211)=

confirmerLArticle.create(obj);


Merci pour ton aide.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Stoufy1605
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248
3
Merci
Tu appelles la méthode confirmerLArticle.create(obj); avec obj qui est null.

Et ensuite, quand tu essayes de faire obj.getTitre(); c'est normal qu'une nullPointerException soit levée...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
61
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
17 avril 2013
1
3
Merci
ok, et comment corriger l'erreur? Merci pour ta réponse!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Stoufy1605
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248
3
Merci
C'est une erreur de programmation, tu la corrigeras si tu n'appelles plus cette méthode avec null mais en lui passant un objet qui a le bon type.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
61
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
17 avril 2013
1
3
Merci
Donc suivant ton raisonnement, je dois replacer la valeur null, par les parametres de l'objet?
Je ne vois pas trop comment écrire le code.

confirmerLArticle.create(new DAOArticle(titre, fichier, auteur, date))


Pourrais-tu m'aiguiller un petit peu plus? Comment dois-je corriger mon code pour que cela fonctionne??

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Stoufy1605
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248
3
Merci
Je ne sais pas ce qu'attend la méthode create. Il faut que tu lui passes le bon objet. Tu veux insérer dans la base des données qui proviennent d'un objet, c'est cet objet que tu dois passer en paramètre de ta méthode.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
61
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
17 avril 2013
1
3
Merci
J'ai essayer de mettre mes JTexField en parametre,en réfléchissant à ce que tu viens d'écrire, j'ai donc changer mon code en
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(titre2,fichier2,auteur2,date2);
Article obj =null;
confirmerLArticle.create(obj);

}


avec

public class DAOArticle extends DAO {

        public DAOArticle(JTextField titre2, JTextField fichier2, JTextField auteur2, JTextField date2) {
        	if(connect==null)
        		connect = DAOConnexion.getConnexion();
        }



 public boolean create(Article obj) {	
        	
        
        	boolean reponse=false;            
            
        	
            try {
            	Statement state = this.connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
            	String requete = "INSERT INTO article(titre, fichier, date,auteur) VALUES('"+obj.getTitre()+"', '"+obj.getFichier()+"', '"+obj.getAuteur()+"', '"+obj.getDate()+"');";
            	System.out.println(requete);

reponse = state.execute(requete);

                   
            } 


...et... cela ne fonctionne toujours pas. Que te faudrait-il(comme morceau de code) pour me dire et m'expliquer exactement ce qu'il manque?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Stoufy1605
Messages postés
61
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
17 avril 2013
1
3
Merci
Plus haut je n'ai créé qu'une classe abstraite avec une méthode vide :

public abstract class DAO<T> {
        
        protected static Connection connect = null;
        
        public DAO(){
                
        }
        
        public abstract  boolean create(T obj);
        
        public abstract boolean delete(T obj);
        
        public abstract boolean update(T obj);
        
        public abstract ArrayList<T> find(String type, String info);
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Stoufy1605
Messages postés
61
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
17 avril 2013
1
3
Merci
personne ne sait?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Stoufy1605
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248
3
Merci
Tu fais toujours la même chose :
Article obj = null;
confirmerLArticle.create(obj);


C'est ca qui pose problème

Tu dois passer à la méthode create un objet de type Article non nul

Si le constructeur de ta classe article est correct :
Article obj  = new Article(titre2,fichier2,auteur2,date2);
confirmerLArticle.create(obj);

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
61
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
17 avril 2013
1
3
Merci
Merci Julien39, puis-je t'appeler Maître?? Le problème a été résolu. Un grand merci pour ton aide et ta patience.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Stoufy1605
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248
3
Merci
oui, c'est possible.

a+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39