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 :

PreparedStatement probleme serieux


Sujet :

JDBC Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut PreparedStatement probleme serieux
    Je vous en prie ce problème me tracasse pendant 3 jours !! j'arrive pas a résoudre !, en fait, je veut ajouter un sportif, il ne s'ajoute pas convenablement (Cin = 0, ...) malgré que j'ai bien saisi !
    une exception Sql est levée ...
    Le principe est de vérifier si le sportif est existant par son CIN, sinon l'ajouter !
    enfin voila un morceau du code :
    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
    59
    60
    61
    public void ExecuterRequette(JPanel pan,int Cin,String Nom, String Prenom, java.sql.Date Daten, java.sql.Date Datea, int Tel, double Poids, String Adresse, java.sql.Date Datep)
        {
            boolean existe = false;
            try {
    
            //connection a la base de données
            String DBurl = "jdbc:odbc:sportif";
            con = DriverManager.getConnection(DBurl);
    
            PreparedStatement stmt= con.prepareStatement("Insert INTO infosinscri(Cin, Nom, Prenom, DateNaiss, DateAdhes, Tel, Poids, Adresse, DatePaiement) Values (?, ?, ?, ?, ?, ?, ?, ?, ?)");
    
                requete = "Select * From infosinscri ";
                Statement statement = con.createStatement();
                resultats = statement.executeQuery(requete);
                boolean encore = resultats.next();
    
                int CIN;
    
                while((encore)&&(existe))
                {
                    CIN = resultats.getInt(1);
                    
                    if(CIN == Cin)
                    {
                        JOptionPane.showMessageDialog(pan, "Ce numero de CIN est present dans la base !\nVerifiez votre saisie\nImpossible d'ajouter a la base !", "CIN Existant !", JOptionPane.ERROR_MESSAGE);
                        encore = false;
                        existe = true;
                     }
                    encore = resultats.next();
                 }
    
            if(!existe)
            {
                
                                stmt.setInt(1, Cin);
                                System.out.println("Wadjo Checkpoint");
                                stmt.setString(2, Nom);
                                stmt.setString(3, Prenom);
                                stmt.setDate(4, Daten);
                                stmt.setDate(5, Datea);
                                stmt.setInt(6, Tel);
                                stmt.setDouble(7, Poids);
                                stmt.setString(8, Adresse);
                                stmt.setDate(9,Datep);
                                stmt.execute();
                                System.out.println("nb mise a jour = "+stmt.executeUpdate());
                                JOptionPane.showMessageDialog(pan, "Ajout de "+Nom+" "+Prenom+" est effectué\n avec succès !", "Succès d'ajout!",JOptionPane.INFORMATION_MESSAGE) ;
    
    
     
                }
                                resultats.close();
                }
    
               catch (SQLException e) {
              JOptionPane.showMessageDialog(pan, e.getMessage(), "Doubons !",JOptionPane.ERROR_MESSAGE) ;
            }
    
    
        }
    Le problème normalement est dans la ligne en rouge ...
    Merci infiniment je suis devenu fou a cause de ce programme !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Citation Envoyé par wajdy Voir le message
    une exception Sql est levée ...
    Et bien sûr, on est supposé deviner laquelle?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    non !! j'ai oublié de mentionné c'est SQLException " doublons ... " dans la base, alors qu'il n'existe pas de doublons !!, ca ajoute l'entrée et me lève cette exception.

  4. #4
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Salut,

    Citation Envoyé par wajdy Voir le message
    non !! j'ai oublié de mentionné c'est SQLException " doublons ... " dans la base, alors qu'il n'existe pas de doublons !!, ca ajoute l'entrée et me lève cette exception.
    c'est quoi ton clé primaire ?

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    La Carte d'identité nationale

  6. #6
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par wajdy Voir le message
    La Carte d'identité nationale
    Apparemment, tu as fait deux enregistrement dan ta base de données avec le méme numéro CIN.
    Pour être sur, essayer d'enlever la propriété PIMARY_KEY du champ CIN à titre de vérification

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    juste comme ça, les numéros de registre nationaux ou de carte d'identité, c'est en général un mauvais choix comme clé primaire:

    -> C'est encodé par un être humain, donc sujet à erreur, et corriger une clé primaire, c'est galère. Toujours préférer une clé primaire non encodée et automatique
    -> Les "non français" n'ont probablement pas de carte d'identité.

    Je sais que je suis hors sujet là, mais par expérience, c'est avec ce genre de structure qu'en tant qu'intervenant extérieur on doit expliquer à un type que, non, on ne peux pas fournir ce numéro dans le fichier qu'on envoie car il n'existe pas pour une personne donnée

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    Slim frero je suis sous access, j'ai enlevé et j'ai remis, parce que ma BD est assez petite j'ai que cette clé primaire j'ai testé... bon ce problème persiste et je croit que le corriger vient par le controle de saisie en mettant le boutant "jouter a la bd" a enabled(false) mais sous quelle condition ? c'est la le problème !

  9. #9
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par wajdy Voir le message
    bon ce problème persiste et je croit que le corriger vient par le controle de saisie en mettant le boutant "jouter a la bd" a enabled(false) mais sous quelle condition ? c'est la le problème !
    peux tu ré-expliquer, j'arrive pas à comprendre le problème

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    juste comme ça, les numéros de registre nationaux ou de carte d'identité, c'est en général un mauvais choix comme clé primaire:

    -> C'est encodé par un être humain, donc sujet à erreur, et corriger une clé primaire, c'est galère. Toujours préférer une clé primaire non encodée et automatique
    -> Les "non français" n'ont probablement pas de carte d'identité.

    Je sais que je suis hors sujet là, mais par expérience, c'est avec ce genre de structure qu'en tant qu'intervenant extérieur on doit expliquer à un type que, non, on ne peux pas fournir ce numéro dans le fichier qu'on envoie car il n'existe pas pour une personne donnée
    Merci tchize pour ces parole ca m'apporte de l'expérience merci vraiment !!
    Je vais essayer de le changer plus tard avec d'autres applications, mais la, on me demande de mettre le Num de Cin comme clé primaire c'est imposé !

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    Citation Envoyé par slim_java Voir le message
    peux tu ré-expliquer, j'arrive pas à comprendre le problème
    Ok, mon problème c'est que je cherche a ajouter un sportif a la Base.
    Mais mon programme doit vérifier les données (surtout le num de Cin) pour savoir s'il ya des doublons ... bon pour faire plus simple ... si vous en avez un bout de code pour parcourir la base de donnée et vérifier l'existence du CIN passez moi, mais en attendant il existe ce parcours déjà dans le premier message
    Ca me rend déstabilisé

  12. #12
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    bon j'ai saisis mon probleme c'est dans ExecuteUpdate je l'ai enlevé une exception de moins ... mais le message des doublons reste ...

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    Bonjour,

    tu fait ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    stmt.execute();
    System.out.println("nb mise a jour = "+stmt.executeUpdate());
    ce qui fait que tu demande 2 exécution de ton INSERT

    apres j'ai un petit truc pourquoi tu n'utilise pas SQL pour savoir si tu a deja les CIN dans la DB ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                PreparedStatement find = con.prepareStatement("SELECT count(*) FROM infosinscri WHERE Cin = ?");
                find.setInt(1, Cin);
                ResultSet rs = find.executeQuery();
     
                if(rs.next()){
                    if(rs.getInt(1) > 0){
                        existe = true;
                    }
                }

  14. #14
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    merciiiii je vais m'y remettre et essayer ...
    je vous tien au courant du resultat !

  15. #15
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    Merci pour tout le monde c'est resolu
    mais c'est quoi ce bout de code je ne saisie pas son utilité !

  16. #16
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    Alors pas de reponse ?

  17. #17
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Citation Envoyé par wajdy Voir le message
    Merci pour tout le monde c'est resolu
    mais c'est quoi ce bout de code je ne saisie pas son utilité !
    Ben ça fait justement ce que tu veux, sa t'assure que l'entrée existe

  18. #18
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Ben ça fait justement ce que tu veux, sa t'assure que l'entrée existe
    Mais je veut m'assurer qu'elle n'existe pas moi, afin de faire aux doublons !!

  19. #19
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    en terme de logique, tester si elle existe reviens au meme que tester si elle n'existe pas :/

  20. #20
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut
    Ok Tchize je saisie merci

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

Discussions similaires

  1. Probleme serieux launcher
    Par Destroileur dans le forum VB.NET
    Réponses: 3
    Dernier message: 02/08/2013, 01h16
  2. Probleme serieux avec Ant Apache
    Par mixany dans le forum ALM
    Réponses: 0
    Dernier message: 26/05/2011, 23h57
  3. Probleme Serieux Sur Les Constructeurs
    Par aderfat dans le forum C++
    Réponses: 31
    Dernier message: 10/07/2007, 18h03
  4. Serieux probleme de conception
    Par anykeyh dans le forum Langage
    Réponses: 11
    Dernier message: 24/02/2006, 23h52
  5. Réponses: 13
    Dernier message: 10/05/2004, 17h49

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