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

JDBC Java Discussion :

mettre à jour les enregistrements déjà existant


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    étudiante
    Inscrit en
    Janvier 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Janvier 2016
    Messages : 54
    Points : 21
    Points
    21
    Par défaut mettre à jour les enregistrements déjà existant
    Bonjour,
    Comment mettre à jour l'attribut (quantite_T) lors de l'insertion (le cas ou le produit est déjà enregistré) dans ma table "produit "
    Aidez moi SVP !
    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
            String num_bl = nbl.getText();
            String ref_prod = nump.getText();
            String codebare = barecode.getText();
            String designation = nomp.getText();
            String designation_fr = nomp_fr.getText();
            String categorie = catp.getSelectedItem().toString();
            String unite_p = unitep.getSelectedItem().toString();
            String quantite_T = qteT.getText();
            String prix_unitaire = prixp.getText();
            SimpleDateFormat date= new SimpleDateFormat("yyyy-MM-dd");
            Date ddate =datexp.getDate();
           
            String date_exp = date.format(ddate);
            String alerte_q = alerteq.getText();
            String alerte_d = alerted.getText();
            
    
            String requete = "insert into produit(num_bl,ref_prod,codebare,designation,designation_fr,categorie,unite_p,date_exp,quantite_T,prix_unitaire,alerte_q,alerte_d)VALUES('" + num_bl + "','"
                    + ref_prod + "','" + codebare + "','" + designation + "', '" + designation_fr + "','" + categorie + "','" + unite_p + "' ,'" + date_exp + "','" + quantite_T + "','" + prix_unitaire + "','" + alerte_q + "','" + alerte_d + "')";
            try {
                st.executeUpdate(requete);
                JOptionPane.showMessageDialog(null, "le produit est ajouté");
                nbl.setText("");
                nump.setText("");
                barecode.setText("");
                nomp.setText("");
                nomp_fr.setText("");
                catp.setSelectedItem(2);
                unitep.setSelectedItem(2);
                qteT.setText("");
                prixp.setText("");
                datexp.setDate(ddate);
                alerteq.setText("");
                alerted.setText("");
                afficher();
    
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex.getMessage());
            }

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Points : 913
    Points
    913
    Billets dans le blog
    5
    Par défaut
    ll y a 2 problème:

    1)Séparation des rôles, notamment entre l'affichage (JOptionPane) et la mise à jour ( st.executeUpdate(requete).

    2) Toujours utiliser des PreparedStatement à des Statement pure. Il y a plein de raison à ça. Là aussi, voir ici:
    https://java.developpez.com/faq/jdbc...paredStatement

  3. #3
    Membre à l'essai
    Femme Profil pro
    étudiante
    Inscrit en
    Janvier 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Janvier 2016
    Messages : 54
    Points : 21
    Points
    21
    Par défaut
    Pourriez vous m'expliquer ? je n'ai pas compris qu'est ce que dois faire? une deuxième requête de update ?

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Points : 913
    Points
    913
    Billets dans le blog
    5
    Par défaut
    Pour commencer, je recommande de revoir les bases en théorie de la BDD.

    Bon, déjà, on sépare l'affichage du traitement (SOLID, Rasoir d'Ockham ...).

    Une fois la séparation faite, 2 cas:

    Le cas général
    C'est ce que l'on fait en informatique de gestion. L'interface (qui j'insiste, n'a rien à voir avec le traitement), permet d'insérer une donnée ou de la modifier (voir la supprimer...).
    Dans ce cas, on utilise le patterne DAO ( https://cyrille-herby.developpez.com...c-pattern-dao/ )

    Pour bien réussir sa DAO, on crée une interface DAO générique, une classe abstraite DAO générique (Le template Method https://fr.wikipedia.org/wiki/Patron_de_m%C3%A9thode ) et la classe DAO pour l'objet java Produit qui là, devrait exister.

    Et comme on est de gros flemmard, en général, on se base sur un framework pour éviter de manipuler le SQL (comme JPA par exemple) mais on peut tout faire par SQL et JDBC. C'est possible, juste fastidieux.

    Donc il manque une classe produit, et une interface DAO<T> comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public interface DAO<T>{
        insert(T t) throw DAOException;
     
        update(T t) throw DAOException;
     
        delete(T t) throw DAOException;
     
        ....
    }
    Comme on n'aime vraiment pas écrire le même code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public abstract class AbstractDAO<T> implements DAO<T>{
     
    //Code de base...
    //Certaines méthodes peuvent même être implémentées
    }
    Et enfin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public class ProduitDAO extends AbstractDAO<Produit>{
    //Implémentation de toutes les méthodes abstraites du Template Methode pour que ça marche).
    }
    Cas des opérations compliquées
    A n'utiliser que pour des opérations compliquées en BDD.

    Ici, ce n'est pas contradictoire avec le cas 1. On étend le contrat en ajoutant la méthode pour l'opération compliqué, on surcharge...

    Mais qu'est-ce qu'une opération compliquée?

    On dira que c'est une opération qui fait intervenir des transactions.
    Car selon la théorie de la BDD (j'avais prévenu), une BDD est toujours cohérente.
    Un utilisateur ne voit qu'un état stable de la BDD
    Elle est ACID ( https://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID ).

    En gros, on commence une transaction.

    Si tout c'est bien passé, on valide (on dit COMMIT).
    Si il y a un problème, on revient à l'état stable (ROLLBACK).

    tu trouvera des choses ici:
    https://mkyong.com/jdbc/jdbc-transaction-example/

    Le plus important:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    catch(Exception e){
        conn.rollback()
        //Le reste du traitement d'erreur.
    }

Discussions similaires

  1. Réponses: 14
    Dernier message: 26/09/2018, 14h59
  2. Réponses: 4
    Dernier message: 04/05/2008, 23h39
  3. [SQL] Problème mettre à jour les enregistrements de la BDD
    Par dolf13 dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 25/10/2006, 11h46
  4. [VBA-E] comment ne pas mettre à jour les liaisons!
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/12/2005, 12h05
  5. Mettre à jour les if et variable toute les x seconde.
    Par Guillaume602 dans le forum C++
    Réponses: 5
    Dernier message: 06/12/2005, 19h09

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