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 :

Base de données et classe PreparedStatement


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut Base de données et classe PreparedStatement
    Bonjour,

    j'essaie de construir des méthodes pour supprimer des données dans une table et les mettre à jour sur le modèle d'une méthode pour les insérer que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void Insert(Personne p)throws Exception
        {
          PreparedStatement ps=getPreparedStatement("INSERT INTO TblPersonnes (Name,Age) VALUES (?,?)");
            ps.setString(1, p.getName());
            ps.setInt(2, p.getAge());
            ps.execute();
            ps.getConnection().close();
    La personne p est construite dans le Main, getName et getAge pour récupérer nom et âge, et les mettre avec setInt et setString dans la table; l'instruction est ecécutée ensuite et la connexion fermée.
    Maintenant mon problème est le suivant avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void Delete(Personne p) throws Exception
        {
            PreparedStatement del = getPreparedStatement("DELET FROM TblPersonnes WHERE Name=?");
     
            del.execute();
            del.getConnection().close();
    }
    Entre PreparedStatement et del.execute(), comment récupérer le nom ou l'âge de la personne à éliminer, sachant qu'elle sera construite dans la classe Main?
    Exemple:
    Personne p=new Personne("Jean",15);
    PersonneFactory pFactory=new PersonneFactory(new ConnectionString("jdbc:mysql://localhost/personnes", "YYYY", "XXX"));
    pFactory.Delete(p);

    Merci de votre aide

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Salut,

    J'ai surement loupé un truc... Bref, si j'ai bien compris, il suffit de faire un "del .setString(1,p.getName());" avant ton del.execute()... Mais vu que tu fais ça dans l'insert, je ne vois pas pourquoi tu n'aurais pas fait de même dans le delete (il te manque d'ailleurs un "e" à DELETE)...


  3. #3
    Membre confirmé Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut
    Citation Envoyé par DevTeam_ Voir le message
    Salut,

    J'ai surement loupé un truc... Bref, si j'ai bien compris, il suffit de faire un "del .setString(1,p.getName());" avant ton del.execute()... Mais vu que tu fais ça dans l'insert, je ne vois pas pourquoi tu n'aurais pas fait de même dans le delete (il te manque d'ailleurs un "e" à DELETE)...

    Bonjour,

    parce que pour moi setString et setInt servent à mettre les données (String ou Int) dans l'index x, et moi ce que je veux c'est justement les enlever. Je ne sais pas comment faire ni si mon raisonnement est le bon.

  4. #4
    Membre expérimenté Avatar de mOuLi
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Les méthode setString, setInt ... sont utilisées pour alimenter ton objet de type PreparedStatement. Ca permet de remplacer les point d'interrogation lors de l'exécution de la requête. Si ton statement est un ordre de suppression alors ça déterminera les infos de l'élément à supprimer.

    Donc comme te le dit DevTeam_, il faut que tu appliques la même logique que pour l'insert.

  5. #5
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    http://jguillard.developpez.com/JDBC/8.html

    En tout cas, c'est un bon choix que d'utiliser les PreparedStatements, même s'ils sont (un peu) plus complexes à utiliser au début.

  6. #6
    Membre confirmé Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut
    Citation Envoyé par mOuLi Voir le message
    Les méthode setString, setInt ... sont utilisées pour alimenter ton objet de type PreparedStatement. Ca permet de remplacer les point d'interrogation lors de l'exécution de la requête. Si ton statement est un ordre de suppression alors ça déterminera les infos de l'élément à supprimer.

    Donc comme te le dit DevTeam_, il faut que tu appliques la même logique que pour l'insert.
    Merci pour la réponse.
    C'est fait, mais il (= NetBeans) met des points rouges partout et le message est le suivant: "class, interface, or enum expected"
    Or, au niveau des import il n'y a pas de problème. Je ne comprends pas.

  7. #7
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Citation Envoyé par bandit_debutant Voir le message
    Merci pour la réponse.
    C'est fait, mais il (= NetBeans) met des points rouges partout et le message est le suivant: "class, interface, or enum expected"
    Or, au niveau des import il n'y a pas de problème. Je ne comprends pas.
    Tes accolades (début / fin de méthode par exemple) sont bien fermées ?

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

Discussions similaires

  1. [POO] associer base de données et classe
    Par floriann dans le forum Langage
    Réponses: 14
    Dernier message: 15/01/2011, 13h19
  2. formulaire / php / base de données et classes
    Par No3l_tek dans le forum Langage
    Réponses: 1
    Dernier message: 30/04/2008, 09h52
  3. Réponses: 3
    Dernier message: 05/10/2006, 17h15
  4. [Conception] class au dessus d'une base de donnée
    Par le_chainon_manquant dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/07/2006, 12h14

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