Souci avec un parametre d'une requete préparée dans une methode model MVC

coolanso Messages postés 75 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 5 juillet 2014 - 26 août 2011 à 20:28
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 29 août 2011 à 08:28
En fait voici mon probléme,je veux executer une requete de MAJ dont la clause where est un élément d'un JList.c'est le model MVC que je tente d'implémenter voyez vous ? j'ai crée une classe des getters setters dans mon package com.anso.dpicol.model ,une autre classe pour mes methodes de modification,d'ajout,etc dans mon package com.anso.dpicol.services que j'apelle dans les ActionPerformed de mon interface qui se trouve dans mon package com.anso.dpicol.vue.Je ne sais pas comment faire pour passé l'élement du Jlist dont on souhaite modifier les données à ma methode de modification dans le package service,je sais,vous me dirai un truc comme ça : pst.setString(1,jList1.getSelectedValue().toString());pas moyen parceque jlist1 est en private,donc il faut necessairement passer par ma classe de getters setters.comment pouvoir le faire?
comment arriver à créer un getter et un setter qui prend un Jlist en paramètre et me ramener cette valeur ?

voici des bouts de code:

package com.anso.dpicol.model;

import javax.swing.JList;

/**
 *
 * @author Cool
 */
public class Utilisateur {
     
private String nom;
private String mdp;
private int drtAn;
private int drtJs;
private int drtAm;
private int drtAdmin;

public String getNom(){
    return this.nom;
}

public String getMdp(){
    return this.mdp;
}

public int getDrtAn(){
    return this.drtAn;
}
public int getDrtJs(){
    return this.drtJs;
}

public int getDrtAm(){
    return this.drtAm;
}

public int getDrtAdmin(){
    return this.drtAdmin;
}

    public void setNom(String nom) {
        this.nom = nom;
    }

    public void setMdp(String mdp) {
        this.mdp = mdp;
    }
    
    public void setDrtAn(int drt1) {
        this.drtAn = drt1;
    }
    
     public void setDrtJs(int drt2) {
        this.drtJs = drt2;
    }

      public void setDrtAm(int drt3) {
        this.drtAm = drt3;
    }
      
       public void setDrtAdmin(int drt4) {
        this.drtAdmin = drt4;
    }
       
}

package com.anso.dpicol.services;
public class ServicesUtilisateur {

public boolean modifierUtilisateur(Utilisateur user) {
 Connection connection = DataBaseConnector.getConnection();
     if (connection == null) {
         return false;
     }
try {
            PreparedStatement preparedStatement = connection.prepareStatement("update  user set NomUser=?,Pass=?,Acte_Naiss=?,Juge_Sup=?,Acte_Mar=?,Droit_Admin=? where NomUser=? ");
           // PreparedStatement prep2 connection.prepareStatement("UPDATE Annuaire SET noTel ? WHERE nom = ?");
            preparedStatement.setString(1, user.getNom());
            preparedStatement.setString(2, user.getMdp());
            preparedStatement.setInt(3, user.getDrtAn());
            preparedStatement.setInt(4, user.getDrtJs());
            preparedStatement.setInt(5, user.getDrtAm());
            preparedStatement.setInt(6, user.getDrtAdmin());
            //preparedStatement.setString(7, user.getNom());/*j'avais ecris ça mais lui il considere le nom saisi dans le JTextfield*/
            preparedStatement.setString(7,com.anso.dpicol.vue.FrmMaj1.jList1.getSelectedValue().toString());/*mon probleme se situe à ce niveau*/
preparedStatement.executeUpdate();


Merci pour votre compréhension.

2 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
28 août 2011 à 19:21
salut ;o)

ça com.anso.dpicol.vue.FrmMaj1
et ça com.anso.dpicol.vue.FrmMaj1.jList1
;o) cela ne doit pas s'écrire ;o) c est pas beau ;o) si je comprend bien (au regard de cette ligne) tu as une JList static dans une Class de nom FrmMaj1 ?!!! si FrmMaj1 est une réference, sa syntaxe est mauvaise!! sinon il faut qu il ait des methode get pour acceder aux objets...

Et je pense que de toute facon tu ne devrais pas faire comme ca!!!
vu ton écriture la valeur dont tu as besoin doit se trouver sur un formulaire quelconque de ton apli au moment de l execution de cette methode!!?? Donc une action probablement consecutive ;o) a la modif de cette valeur ;o), donc elle devrait etre passé en parametre totu simplement... quoi qu il en soit ;o) tu dis utiliser la methode MVC ;o) Donc tu disposes d un model de données ;o) alors que diable ;o) utilise le.... ;o) jamais on accede aux données de la sortet ;o) (juste pour remplir les models justement) ;o) ...

en esperant t avoir eguillé ;o)

GodConan ;o)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
29 août 2011 à 08:28
Bonjour,

Tu es bien loin d'implémenter un modèle MVC, tu ne réalises même pas une conception objet propre alors que c'est la base.

Pour récupérer des données dans la vue, il faut en effet que tu mettes les données en paramètre d'une fonction (quand tu appelles le contrôleur). Une solution est de passer la totalité de la vue en paramètre de la méthode, dans ce cas, essayes de créer un interface qui te permettra de changer la vue au cas ou...

par exemple : dans la vue :

public class Vue {
    
    private Controleur controleur;

    public Vue(Controleur controleur){
        this.controleur=controleur;
    }

    public void envoyerDonnees(){
        controleur.recevoirDonnes(this);
        //Ou
        controleur.recevoirDonnees(parametre);
    }
}

0
Rejoignez-nous