Java:problème de requêtes

yserman -  
Pool Orion Messages postés 124 Statut Membre -
Salut à tous voilà j'ai écrit une requête de suppression mais j'ai un problème avec la syntaxe

voici mes trois lignes :

id est déclaré en int et je cast l'id récupérer .
Le problème est dans ma 2ième ligne comment dire que je veux supprimer les articles qui ont comme id la valeur contenue dans id ??

id=((Integer)(essai.getValueAt(essai.getSelectedRow(),0))).intValue();

String deletage="DELETE from Article where IDArticle= id";

AccesBD.executerInstruction(deletage);

voilà
merci d'avance

6 réponses

  1. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    Salut

    tu es certain de récupérer un objet Integer ???

    id=((Integer)(

    0
  2. yserman
     
    ben oui c'est la clé de ma table qui est " numero auto"
    0
  3. Pool Orion Messages postés 124 Statut Membre 55
     
    Salut,

    C'est quoi ta base de données?

    Un petit conseil, utilise les PreparedStatement c'est beaucoup mieux.

    Sinon, la plupart des bases de données on des domaines et dans ce cas, si tu veux accéder à ta table, il te faut renseigner schema.article where article.id = ...

    Donne nous plus d'infos sur ta config ce sera plus simple.
    0
  4. yserman
     
    c'est une base de données access
    une de mes tables se nomme Article
    la clé de cette table est IDArticle (NumeroAuto)
    et je veux supprimer la ligne que j'ai selectionnée dans mon tableau

    voici le code de ma class :

    /*
    * ConsulterProduit.java
    *
    * Created on 4 mars 2005, 14:48
    */

    package GestionStock;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import java.sql.*;
    import java.applet.*;
    /**
    *
    * @author Kevin
    */
    public class SupprimerProduit extends JFrame {

    JTable essai;
    JButton retour,supp;
    Generale g;
    Container cont;
    JPanel pan;
    String requete;

    /** Creates a new instance of ConsulterProduit */
    public SupprimerProduit() {

    super ("Suppression d'articles");
    setBounds (10,40,950,520);
    setResizable(false);
    addWindowListener (new WindowAdapter ()
    {public void windowClosing (WindowEvent e) {
    System.exit (0);}});

    //déclaration du conteneur
    cont = getContentPane();
    cont.setLayout (null );
    cont.setBackground(Color.white);

    //déclaration du panneau qui contient le tableau
    pan=new JPanel(new FlowLayout () );
    pan.setBounds(25,50, 900, 350);
    pan.setBackground(Color.white);

    //selectionner colonne de la table
    requete="SELECT Ref,Nom,Categorie,Description,Prix,Quantite,Fournisseur,Seuil FROM Article";

    //executer requete à tablemodel qui retourne un modele pour une JTable
    essai=AccesBD.creerTableModel(requete);
    essai.setBackground(Color.white);

    essai.getColumnModel().getColumn(0).setPreferredWidth(80);
    essai.getColumnModel().getColumn(1).setPreferredWidth(150);
    essai.getColumnModel().getColumn(2).setPreferredWidth(120);
    essai.getColumnModel().getColumn(3).setPreferredWidth(200);
    essai.getColumnModel().getColumn(4).setPreferredWidth(70);
    essai.getColumnModel().getColumn(5).setPreferredWidth(40);
    essai.getColumnModel().getColumn(6).setPreferredWidth(150);
    essai.getColumnModel().getColumn(7).setPreferredWidth(40);

    //pas de taille fixe pour les colonnes
    essai.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

    //ajout du bouton retour
    retour = new JButton (new ImageIcon (getClass().getClassLoader().getResource("GestionStock/Images/retour.jpg")));
    retour.setBounds (150,450,85,25);
    retour.setBackground(Color.WHITE);
    cont.add (retour);
    supp=new JButton (new ImageIcon (getClass().getClassLoader().getResource("GestionStock/Images/supp.jpg")));
    supp.setBounds (600,450,85,25);
    supp.setBackground(Color.WHITE);
    cont.add (supp);
    //ajout du tableau dans le panneau
    pan.add (essai);

    //ajout du panneau dans le conteneur
    cont.add(pan);

    MonGestionnaire ecout =new MonGestionnaire(); //classe écouteur d'evenements
    retour.addActionListener(ecout);
    supp.addActionListener(ecout);

    show();

    }

    //methode graphique pour le cadrillage et le nom des colonnes
    public void paint ( Graphics g)
    {
    super.paint (g);
    g.setColor(Color.red);
    g.draw3DRect(45,80,860,350,true);

    g.setColor(Color.red);
    g.draw3DRect(45,40,90,40,true);
    g.setColor(Color.red);
    g.draw3DRect(135,40,145,40,true);
    g.setColor(Color.red);
    g.draw3DRect(280,40,125,40,true);
    g.setColor (Color.red);
    g.draw3DRect(405,40,195,40,true);
    g.setColor (Color.red);
    g.setColor(Color.red);
    g.draw3DRect(600,40,70,40,true);
    g.setColor(Color.red);
    g.draw3DRect(670,40,40,40,true);
    g.setColor(Color.red);
    g.draw3DRect(710,40,150,40,true);
    g.setColor(Color.red);
    g.draw3DRect(860,40,45,40,true);

    g.setFont(new Font ("SansSerif",Font.PLAIN,16));
    g.drawString ("Réf ",70,70);
    g.setFont(new Font ("SansSerif",Font.PLAIN,16));
    g.drawString ("Nom ",190,70);
    g.setFont(new Font ("SansSerif",Font.PLAIN,16));
    g.drawString ("Catégorie ",310,70);
    g.setFont(new Font ("SansSerif",Font.PLAIN,16));
    g.drawString ("Description ",450,70);
    g.setFont(new Font ("SansSerif",Font.PLAIN,16));
    g.drawString ("Prix ",620,70);
    g.setFont(new Font ("SansSerif",Font.PLAIN,16));
    g.drawString ("Nbr ",680,70);
    g.setFont(new Font ("SansSerif",Font.PLAIN,16));
    g.drawString ("Fournisseur ",740,70);
    g.setFont(new Font ("SansSerif",Font.PLAIN,16));
    g.drawString ("Seuil ",865,70);

    }

    //gestionnaire d'action
    private class MonGestionnaire implements ActionListener
    {
    public void actionPerformed(ActionEvent e) //méthode appelée si on clique sur le bouton
    {

    if (e.getSource()== retour)
    {

    dispose ();
    }
    if (e.getSource()== supp)
    {

    int id=((Integer)(essai.getValueAt(essai.getSelectedRow(),0))).intValue();
    String deletage="DELETE from Article where IDArticle="+id+";";

    AccesBD.executerInstruction(deletage);

    pan.removeAll();
    essai=AccesBD.creerTableModel(requete);
    pan.add(essai);
    essai.setBackground(Color.WHITE);

    essai.getColumnModel().getColumn(0).setPreferredWidth(80);
    essai.getColumnModel().getColumn(1).setPreferredWidth(150);
    essai.getColumnModel().getColumn(2).setPreferredWidth(120);
    essai.getColumnModel().getColumn(3).setPreferredWidth(200);
    essai.getColumnModel().getColumn(4).setPreferredWidth(70);
    essai.getColumnModel().getColumn(5).setPreferredWidth(40);
    essai.getColumnModel().getColumn(6).setPreferredWidth(150);
    essai.getColumnModel().getColumn(7).setPreferredWidth(40);

    pan.repaint();
    SupprimerProduit.this.show();

    }
    }
    }

    }

    ce qui me pose problême c'est donc la suppression de la ligne tout à la fin, et je pense bien que c'ets juste la ligne :

    String deletage="DELETE from Article where IDArticle="+id+";";

    car quand je remplace le "id" par un nombre entier ca marche (mais alors sans les + et les guillemets , mais il faut que je supprime la ligne correspondant à la valeur de id et ca j'arrive pas
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    Salut

    essaye de rajouter la ligne de code, tu verras à l'écran ce qu'est réellement "id".

    int id=((Integer)(essai.getValueAt(essai.getSelectedRow(),0))).intValue(); 
    System.out.println(""+id);
    String deletage="DELETE from Article where IDArticle="+id+";"; 
    
    0
  7. Pool Orion Messages postés 124 Statut Membre 55
     
    Oui, en effet je pense que c'est la meilleur solution pour voir exactement l'ordre sql généré.

    Fait également attention à la sélection multiple dans ta JTable.

    0