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 :

[JDBC] Problème avec le resultat


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Points : 102
    Points
    102
    Par défaut [JDBC] Problème avec le resultat
    voilà j'ai formulaire quyi affiche mes produits qui est composé de différents champs texte et d'une JTable que je rempli avec un String [][].
    Lors de l'ajout ou de la suppression d'un produit le formulaire et completement recréée et la une requêtes est faite pour récupérer les produits

    Quand j'ajoute un produit tout se passe bien le formulaire est rechargé et le produit ajouté s'affiche bien, mais lors de la suppression quand je recherge mon formulaire m'affiche toujours le produit supprimé.

    J'ai donc regardé du coté de la requète DELETE et elle s'ffectue convenablement alors pourquoi l'enregistrement est quand même trouvé lors de ma requète SELECT faite juste après dans mon formulaire ?

  2. #2
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    Peut-être que tu ne fais pas de commit après ta suppression ?

  3. #3
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    Il faut séparer la partie base de données de la partie affichage de ton application.

    Bien que je n'ai pas compris la problématique complète de ta question, il se peut qu'en base ton produit soit bien supprimé, mais que les données qui le représentent dans ton application ne le soit pas.

    Pour t'aider plus, il faudrait un peu plus de code quand même, comprendre ce que tu fais, ce que tu veux faire, pour voir ou ca cloche

  4. #4
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 77
    Points : 50
    Points
    50
    Par défaut
    tu as tester ta requete (delete) avant de la mettre dans le code !?

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Points : 102
    Points
    102
    Par défaut
    alors je vais vous montrer un peut plus de code pour que vous compreniez:

    voilà la classe où je supprime mon produit:

    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
    public class SupprimerProduitBase {
    	boolean supprimé;
     
    	//Procedure de suppression d'un produit.
    	public SupprimerProduitBase(PanneauAProduits panneau){
     
    		String url = "jdbc:odbc:BDActivCom";
     
    		Connection con = null;
     
    		try{
     
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    			con = DriverManager.getConnection(url,"","");
    			Statement requete = con.createStatement();
     
    			ResultSet resultat = null;
     
     
    			resultat = requete.executeQuery("SELECT Commandes.NumProduit, Produit.NumProduit FROM "
    					+"Commandes,Produit WHERE "
    					+" Commandes.NumProduit = Produit.NumProduit "
    					+"AND Produit.NumProduit ="+panneau.dataNumero.get(panneau.table.getSelectedRow()));
     
    			if (resultat.next())
    			{
    				JOptionPane.showMessageDialog(null,"Vous ne pouvez pas Supprimer ce produit car il est rattaché à des commandes !\nVeuillez supprimer ces commandes d'abord.","Erreur",JOptionPane.ERROR_MESSAGE);
     
    			}else{
     
    				requete.executeUpdate("DELETE FROM Produit WHERE NumProduit="+panneau.dataNumero.get(panneau.table.getSelectedRow()));
     
    			}
     
    		}catch (Exception e){System.out.println("Erreur suppression produit "+e);}
     
    	}
     
     
     
    }
    si je teste le resultat de ma requète ca marche ya pas de problème:

    maitenant voilà ce qui est fait en suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    PanneauAProduits nouveauPanneau;
    			nouveauPanneau = new PanneauAProduits(fenetre);
     
    			this.fenetre.panneau.removeAll();
     
    			this.fenetre.panneau.add(nouveauPanneau);
    			this.fenetre.repaint();
    			this.fenetre.setVisible(true);
    ca recréé mon panneau contenant mes produits:

    dans ce panneau est faite ma requète qui liste mes produits:

    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
    /**
             * Constructeur pour récupérer la liste des produits dans la base de données
             *  
             * @param dataNumero Vector contenant les numéros de clefs primaires des produits
             * @param dataNom Vector contenant les noms des produits
             * @param dataUnite Vector contenant les unités des produits
             * @param dataTVA Vector contenant les TVA des produits
             */
    	//modifié le 21/07/2005
    	public LireProduits(Vector dataNumero ,Vector dataNom,Vector dataUnite,Vector dataTVA){
    		url = "jdbc:odbc:BDActivCom";
     
    		con = null;
     
    		try{
     
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    			con = DriverManager.getConnection(url,"","");
    			Statement requete = con.createStatement();
     
    			ResultSet resultat = null;
     
     
    			resultat = requete.executeQuery("SELECT * FROM Produit");
     
    			dataNumero.removeAllElements();
    			dataNom.removeAllElements();
    			dataUnite.removeAllElements();
    			dataTVA.removeAllElements();
     
    			while (resultat.next()) { 
     
    				System.out.println("boucle");
    				dataNumero.addElement(resultat.getString("NumProduit"));
    				dataNom.addElement(resultat.getString("Nom"));
    				dataUnite.addElement(resultat.getString("Unité"));
    				dataTVA.addElement(resultat.getString("TVA"));
     
                }
    		}
    		catch(Exception e) {  System.out.println("Impossible de lire les produits " + e);  } 
    		finally { 
    		try {con.close();} 
    		    catch(SQLException e) {e.printStackTrace();} 
     
     
    		}
    	}
    le problème c'est que cette dernière requete liste toujours le produit qui est censé etre supprimé dans la requète précédente

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Dans ton code tu ne fermes pas toujours tes ResultSet, Statement et Connection... C'est comme ca dans ton code ou tu ne l'as pas copier/coller ?

    a++

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Points : 102
    Points
    102
    Par défaut
    j'ai copié mon code tel quel
    Effectivement ca viens de là merci AdiGuba t'es le meilleur

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Cyborg289
    j'ai copié mon code tel quel
    Et bien pour commencer il faudrait les fermer lorsque tu n'en as plus besoin...

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

Discussions similaires

  1. Valoriser un tableau avec le resultat d'une liste multiple
    Par christophe_j dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/11/2005, 11h01
  2. [Requete] Problème avec le resultat
    Par Cyborg289 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/09/2005, 11h48
  3. Réponses: 9
    Dernier message: 07/07/2005, 12h46
  4. Réponses: 6
    Dernier message: 15/05/2005, 14h11
  5. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37

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