IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Comprendre le liant entre DAO et Tableabstract Model


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Comprendre le liant entre DAO et Tableabstract Model
    Bonjour,

    Je me suis lancé dans le java pour mettre un point une petite application pour m'aider à gérer mon stock de livres. J'utilise donc les différents tuto pour intégrer les fondamentaux.

    Là je suis sur les concepts de DAO et de abstracttablemodel, dans l'objectif de faire afficher une liste de livres à partir d'un mot clé dans un champ de recherche. Cela fonctionne sans modele DAO et avec un defauttablemodel, mais j'aimerai comprendre ce concept, pour avoir les bons réflexes d'optimisation.

    Est ce qu'il est pertinent de l'utiliser même pour un table de faible complexité ? J'ai vu dans les tutos, qu'il fallait aussi construire une classe *dao, c'est donc là à priori, que je dois faire ma requête... mais à ce moment là, puis je récupérer la variable de mon panel ?

    J'ai une erreur sur mon model qui dit que "the method getTitre() is undefined for the type object", j'ai aussi du mal a comprendre ou déclarer cette même méthode.

    Je vous remercie
    Bien cordialement

    Le Panel du champ de recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    package com.pl.app;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
     
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.table.DefaultTableModel;
     
    public class PanelConsult extends JPanel {
     
    	  ArrayList t1=new ArrayList();
    	  ArrayList t2=new ArrayList();
    	  ArrayList t3=new ArrayList();
          ArrayList t4=new ArrayList();
    	  ArrayList t5=new ArrayList();
    	  ArrayList t6=new ArrayList();
          ArrayList t7=new ArrayList();
    	  ArrayList t8=new ArrayList();
    	  ArrayList t9=new ArrayList();
    	  DefaultTableModel model;
    	  JScrollPane scroll=new JScrollPane();
    	  JTable tableau =null;
     
    	private JTextField jTextField1;
    	private JButton jButton1;
    	private JLabel jLabel1;
    	private JPanel panelc = new JPanel();
     
    	public PanelConsult() {
       	jTextField1 = new JTextField();
       	jLabel1 = new JLabel();
       	jButton1 = new JButton();
     
       	jLabel1.setText("Votre recherche");
       	jButton1.setText("Ok");
       	jTextField1.setText("Recherche");
     
        GroupLayout layout = new GroupLayout(panelc);
        panelc.setLayout(layout);
        add(panelc);
    	layout.setAutoCreateGaps(true);
    	layout.setAutoCreateContainerGaps(true);
     
           layout.setHorizontalGroup(
               layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
               .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                   .addContainerGap()
                   .addComponent(jLabel1)
                   .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                   .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE)
                   .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                   .addComponent(jButton1)
                   .addContainerGap(192, Short.MAX_VALUE))
           );
           layout.setVerticalGroup(
               layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
               .addGroup(layout.createSequentialGroup()
                   .addContainerGap()
                   .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                       .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                       .addComponent(jLabel1)
                       .addComponent(jButton1))
                   .addContainerGap(277, Short.MAX_VALUE))           
           );
     
           jButton1.addActionListener(new ActionListener() {
               @Override
               public void actionPerformed(ActionEvent e) {
                   //Shows pnlFirst
     		      ResultSet resultSet = null;
     
            	   try {
            		   //Variable contenant le titre/auteur/ean à rechercher
            		   String rqt = jTextField1.getText();
            		   //Préparation de l'objet statement
            		   Statement statement = Connecteur.getInstance().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);;
     
            		      //Création d'un objet Statement
            		      ResultSet result = statement.executeQuery("select * from baseoca where Titre like '%" + rqt + "%' OR Auteur LIKE '%" + rqt + "%' OR EAN LIKE '%" + rqt + "%' ");
            		      while(result.next())
     
            		         {				  				
            			     t1.add(result.getString("Titre"));
            		         t2.add(result.getString("Auteur"));
            		         t3.add(result.getString("Editeur"));
            	             t4.add(result.getString("EAN"));
            			     t5.add(result.getString("Etat"));
            		         t6.add(result.getString("Stock"));
            		         t7.add(result.getString("Prix"));
            	             t8.add(result.getString("Etagere"));
            		         }
     
            		        //resultat.getconn.close(); 
            		        }catch(SQLException f) { 
            			    	  f.printStackTrace(); 
            		    	 }
     
            	                  model=new DefaultTableModel(){
            	       	          public boolean isCellEditable(int row, int col){ 
            	          		  if (col==0) {return false;} 
            	          		   else {return true; }
     
            	          	     }
            	              };            
            	            model.addColumn("   titre  ",t1.toArray());
            	            model.addColumn(" auteur ",t2.toArray());
            	            model.addColumn(" editeur ",t3.toArray());
            	            model.addColumn("   EAN  ",t4.toArray());
            	            model.addColumn(" Etat ",t5.toArray());
            	            model.addColumn("   Stock  ",t6.toArray());  
            	            model.addColumn(" Prix ",t7.toArray());
            	            model.addColumn("   Etagere  ",t8.toArray());  
            		        tableau = new JTable(model);
     
            				scroll.setBounds(20,20,700,400);
            				scroll.setViewportView(tableau);
            				add(tableau);
            				validate();
               }
           });
     
    	 }
    }
    Le modele
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    46
    47
    48
    49
    50
    51
    52
    package com.pl.app;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.swing.table.AbstractTableModel;
     
    public class Consultmodel extends AbstractTableModel {
     
    	private final String[] entetes = { "Titre", "Auteur", "Editeur", "EAN", "Etat", "Stock", "Prix", "Etagere" };
    	private final List Livres = new ArrayList();
     
    	@Override
    	public int getColumnCount() {
    		return entetes.length;
     
    	}
     
    	@Override
    	public String getColumnName(int columnIndex) {
    		return entetes[columnIndex];
    	}
     
    	@Override
    	public int getRowCount() {
    		// TODO Auto-generated method stub
    		return 0;
    	}
     
        @Override
        public Object getValueAt(int row, int column) {
            switch (column) {
            case 0:
                return Livres.get(row).getTitre();
            case 1:
                return Livres.get(row).getAuteur();
            case 2:
                return Livres.get(row).getEditeur();
            case 3:
                return Livres.get(row).getEAN();
            case 4:
                return Livres.get(row).getEtat();
            case 5:
                return Livres.get(row).getStock();
            case 6:
                return Livres.get(row).getPrix();
            case 7:
                return Livres.get(row).getEtagere();
            default:
                return "";
            }
        }
    }
    Ma classe pour la table ciblée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    package com.pl.app;
     
    public class Baseoca {
      //ID
      private int ocaid = 0;
      //Titre du livre
      private String Titre = "";
      //Auteur du livre
      private String Auteur = "";
    //Editeur du livre
      private String Editeur = "";
      //Numéro EAN
      private long EAN = 0;
      //Etat du livre
      private String Etat = "";
    //Stock en boutique du livre
      private String Stock = "";
    //Prix de l'ouvrage
      private float Prix = 0;
    //Etagere ou est rangée l'ouvrage
      private String Etagere = "";
     
      public Baseoca(int ocaid, String Titre, String Auteur, String Editeur, long EAN, String Etat, String Stock, float Prix,String Etagere) {
        this.ocaid = ocaid;
        this.Titre = Titre;
        this.Auteur = Auteur;
        this.Editeur = Editeur;
        this.EAN = EAN;
        this.Etat = Etat;
        this.Stock = Stock;
        this.Prix = Prix;
        this.Etagere = Etagere;
      }
      public Baseoca(){};
     
      public int getocaid() {
        return ocaid;
      }
     
      public void setocaid(int ocaid) {
        this.ocaid = ocaid;
      }
     
      public String getTitre() {
        return Titre;
      }
     
      public void setNom(String Titre) {
        this.Titre = Titre;
      }
     
      public String getAuteur() {
        return Auteur;
      }
     
      public void setAuteur(String Auteur) {
        this.Auteur = Auteur;
      }   
    }

  2. #2
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Bonjour,

    La liste de "Livres" n'est pas typée et c'est "Livres.get(row).getTitre();" ligne 33 du modèle qui génère l'erreur à priori... Il doit être possible de caster, "((Baseoca)Livres.get(row)).getTitre()", pour franchir cette erreur, mais je ne vois pas bien d'après les sources jointes comment les différentes classes sont liées...

    Bon courage!
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Merci, j'ai pu trouver une solution par un autre tuto, que j'ai enfin pu mettre en application, au moins pour le model. Je reviendrais vers le DAO plus tard.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comprendre la différence entre http://example.com et http://www.example.com
    Par zarathoustra69 dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 19/12/2012, 23h55
  2. Lister les entrées sorties d'un modele
    Par anthony.faucogney dans le forum Simulink
    Réponses: 1
    Dernier message: 19/08/2009, 21h51
  3. difference entre DAO et ADO
    Par da991319 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2007, 17h26
  4. Difference entre DAO et ADO
    Par Pe04 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/01/2006, 12h34
  5. Réponses: 6
    Dernier message: 13/09/2005, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo