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

Composants Java Discussion :

Mettre à jour une BDD depuis JTable


Sujet :

Composants Java

  1. #1
    Membre régulier Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Points : 123
    Points
    123
    Par défaut Mettre à jour une BDD depuis JTable
    Bonjour à tous,
    j'espère que je suis sur le bon forum dans la cas contraire, soyez indulgent
    voila j'ai un petit problème :
    Je voudrais pouvoir insérer les informations d'un JTable dans une table de ma base de données en cliquant sur un JBouton dont ja'i mis en place l'action.
    Le nombre de lignes de la table peut varier en fonction de la saisie de l'utilisateur c'est pourquoi je me permet de vous demander votre aide très très précieuses. A savoir comment je procède pour parcourrir une JTable et insérer les données des la JTable dans une base de données.

    Merci encore.

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah tu récupères le modèle de ta JTable.

    Puis une boucle du genre si l'on considère que la JTable contient par ligne les informations d'un objet Bidule, avec le champ truc du Bidule et colonne 0 et le champ machin du Bidule en colonne 1.

    Donc dans ton actionPerformed un truc dans ce style.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    TableModel model = maTable.getModel();
    List<Bidule> bidulesAInsererEnBase = new ArrayList<Bidule>(model.getRowCount());
     
    for(int i = 0; i<model.getRowCount();i++) {
       Bidule monBidule = new Bidule();
       monBidule.setTruc(model.getValueAt(i, 0);
       monBidule.setMachin(model.getValueAt(i, 1);
       bidulesAInsererEnBase.add(monBidule);
     
    }
    //SwingWorker pour faire les tâches lourdes en dehors du thread UI
    BiduleWorker wk = new BiduleWorker(bidulesAInsererEnBase);
    wk.execute
    Une fois la liste de Bidule récupérer on code une méthode dont le rôle est d'ajouter une liste de Bidule en base (en général dans une classe à part, ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class BiduleDb {
       public insertBidule(Bidule b) {
           //Un bon vieux PreparedStatement à l'ancienne
       }
    }
    A toi d'aller suivre les tutos de base sur JDBC pour savoir comment faire une insertion en base

    Puis les insertions en base doivent se faire dans un thread séparé, donc tu sors un bon vieux SwingWorker.

    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
     
     
    package swing.tests;
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.LineNumberReader;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.swing.SwingWorker;
    import javax.swing.table.TableRowSorter;
     
    import org.icroco.tablemodel.IBeanTableModel;
    import org.icroco.tablemodel.TableModelFactory;
    import org.jsefa.common.lowlevel.filter.HeaderAndFooterFilter;
    import org.jsefa.csv.CsvDeserializer;
    import org.jsefa.csv.CsvIOFactory;
    import org.jsefa.csv.config.CsvConfiguration;
     
    import swing.worker.Bidule;
     
    import com.bnpparibas.credo.csvviewer.beans.LegalEntityBean;
     
    public class BiduleWorker extends SwingWorker<List<Bidule>, Integer> {
     
        private List<Bidule> bidules;
     
     
        public MyWorker(List<Bidule> bidules) {
            this.bidules = bidules;
     
        }
     
        @Override
        protected List<Bidule> doInBackground() throws Exception {
            // Count lines
            BiduleDb db = new BiduleDb();
            for(int i = 0; i < bidules.size(); i++) {
     
                db.insetBidule(bidules.get(i));
                setProgress((i*100)/bidules.size());
            }
     
            return bidules;
     
        }
     
        @Override
        public void done() {
            //Ici tu peux modifier ton interface graphique si besoin est, cette méthode est appelée à la fin du traitement.
        }
     
    }

  3. #3
    Membre régulier Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Points : 123
    Points
    123
    Par défaut
    Merci sinok,
    Citation Envoyé par sinok Voir le message
    A toi d'aller suivre les tutos de base sur JDBC pour savoir comment faire une insertion en base
    Pour ce qui est des insertion classique dans une bdd c-à-d récupération des contenu des JTextField ou aux autre pour enregistrer dans une bdd j'y arrive sans problème. Je me permet même de te montrer un model que j'ai réaliser et qui marche très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ...
    try{
    	InitialContext initContext = new InitialContext();
    DataSource ds = (DataSource)     initContext.lookup("jdbc/MaDataSource");
    Connection conn = (Connection) ds.getConnection();
    String requete = "INSERT INTO DOSREC(NUMDOSSIER,DATEREC,HEUREREC,NOMREC,NUMBR,NFOUFO,RSOCFO)"+""
    +" VALUE('"+numDossier+"', '"+TxtDate.getText()+"', '"+TxtHeure.getText()+"','"
    +TxtNomReceptio.getText()+"','"+TxtNumBRCentrale.getText()+"','"+NFOUFO+"','"
    +ComboFournisseur.getSelectedItem()+"')";
    Statement state = conn.createStatement();
    int res = state.executeUpdate(requete);
    conn.close();
    state.close();
    ...
    Par contre, je me permet si ce n'est pas trop te demander pourrais-tu me concocter un tout petit exemple ou s'il y a un lien où je peux télécharger un exemple.

Discussions similaires

  1. [XL-2007] création d'une macro pour mettre à jour une BDD
    Par morguie31 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/11/2012, 16h10
  2. Mettre à jour une table depuis une autre
    Par tiboAcces dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/07/2012, 09h01
  3. Mettre à jour une bdd access
    Par almora007 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/09/2007, 21h39
  4. Mettre à jour une table depuis une autre
    Par snubi dans le forum Access
    Réponses: 1
    Dernier message: 20/04/2006, 19h28
  5. Mettre à jour une table depuis une autre
    Par rsc dans le forum SQL
    Réponses: 4
    Dernier message: 09/07/2004, 10h08

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