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 :

Relance du programme pour bon fonctionnement


Sujet :

avec Java

Vue hybride

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 50
    Par défaut Relance du programme pour bon fonctionnement
    Bonjour à tous,

    je suis en train de faire un petit programme qui sert à gérer le prêt du matériel informatique au sein d'un collège (un peu comme une médiathèque)
    J'ai prévu des méthodes pour créer des professeurs, des élèves, et des objets à emprunter, et mon souci est le suivant:
    - je lance la page d'accueil
    - je peux créer un professeur
    - je peux créer un élève
    - je peux créer un objet
    - si je veux créer un deuxième prof ou élève ou objet, cela ne marche pas, je suis obligé de tout fermer et de relancer le programme.
    Pourriez-vous me dire pourquoi, qu'est-ce qui ne va pas, afin que je puisse l'améliorer?
    Merci d'avance

  2. #2
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Là comme ça sans savoir la technos que tu utilise, la structure de ton application ça va être compliqué.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 50
    Par défaut
    Qu'est-ce je pourrais vous montrer pour être plus clair?
    J'ai oublié de préciser que je travaille avec une base de données MySQL. Au niveau de la connexion je n'ai pas de problème, c'est juste que je ne peux pas créer sur la base deux instances prof, élève ou matériel lors d'un lancement du programme. Le message d'erreur est le suivant:

    com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '700' for key 1

    c'est à dire, qu'il a créé un premier élève dont le numéro (primary key) est 700 (numéro obtenu avec la ligne
    numero = (int)(Math.random()*1000+1);
    de la classe "Eleve")
    et le deuxième porterait le même numéro?
    Des idées?

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Comme ça, j'ai plus l'impression que c'est un problème SQL que Java. Ton message évoque une violation de contrainte sur ta base.

    Ton prog était probablement (mais je peut me tromper) en train de faire un INSERT INTO, avec une clef primaire (je pense) qui existe déjà dans la base. Comme cela viole la contrainte, MYSQL renvoi un refus, et JDBC lève une exception MySQLIntegrityConstraintViolationException.

    En l'occurence Duplicate entry '700', tu aurait déjà une clef primaire 700.

    Comment gère tu cela dans ta base ?

  5. #5
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Comme ça à froid, je dirais que de générer les clés primaires aléatoirement ce n'est vraiment pas une "good practice"...

    Une clé primaire est normalement générée par la base de données, c'est elle et elle seule qui s'occupe de gérer l'attribution des clés et non pas le programme client.... où alors, dans les rares cas où cela se justifie, le programme client doit tester qu'elle soit libre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int numero = (int)(Math.random()*1000+1);
     
    while(! db.sql("SELECT * FROM latable WHERE id = "+numero+"").isEmpty()) {
        numero = (int)(Math.random()*1000+1);
    }

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 50
    Par défaut
    Bonjour,

    et merci de vos réponses.
    La clé primarire est générée par le programme client, en effet. Pill_S, tu parles de faire créer cette clé par la base de données: comment faire cela?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/02/2014, 01h26
  2. Concours de programmation pour trouver un (bon) job
    Par Aude_B dans le forum Emploi
    Réponses: 2
    Dernier message: 16/10/2012, 14h53
  3. Réponses: 0
    Dernier message: 01/07/2010, 11h39
  4. champs de bits dans une structure - option de gcc pour bon fonctionnement
    Par matdakillah dans le forum RedHat / CentOS / Fedora
    Réponses: 1
    Dernier message: 08/10/2008, 12h44

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