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

Persistance des données Java Discussion :

Comment faire une double INSERTION ?


Sujet :

Persistance des données Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 134
    Points : 54
    Points
    54
    Par défaut Comment faire une double INSERTION ?
    Bonjour à tous,

    J'ai trois table:

    Concours--------------Questions--------------RelationConcourQuestion

    #idConcour -----------#idQuestion------------#idConcour#
    -------------------------------------------------idQuestion#




    Je programme en Java "JSP" sur NetBeans, j'ai déjà mon code qui insert mes concours et mes questions.

    Ma question est la suivante:

    Je veux inserer l'idconcour de ma table concour et l'idquestion de ma table question DANS la table RelationConcourQuestion au moment ou j'insere un concour ...

    idConcour et idQuestion sont autoincrementé sur Derby (SGDB).

    J'imagine que le tout se fera en SQL mais comment faire la chose ?

    Méthode addQuestion
    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
    public void addQuestion(Question question) {
            try {
                PreparedStatement st = con.prepareStatement("INSERT INTO question (laquestion,bonnereponse,mv1,mv2,date,auteur) values(?,?,?,?,?,?)");
                st.setString(1, question.getQuestion().toLowerCase());
                st.setString(2, question.getBonneReponse().toLowerCase());
                st.setString(3, question.getMauvaiseReponse().get(0).toLowerCase());
                st.setString(4, question.getMauvaiseReponse().get(1).toLowerCase());
                try {
                    st.setDate(5, new Date(new java.util.Date().getTime()));//Risque de probleme ?!
                } catch (Exception ex) {
                    ex.printStackTrace();
                    System.out.println("Exception lancé dans addQuestion, class ConcoursDao");
                }
                st.setString(6, question.getAuteur().toLowerCase());
                st.executeUpdate();
            } catch (Exception ex) {
                System.out.println("Exception lors du addQuestion dans la class ConcoursDao");
                ex.printStackTrace();
            }
     
        }
    Méthode addConcour
    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
    public void addConcour(String titre, String date_fin, List<Question> Lquestion, int nbrQuestion, String gain, String depot, short avec_question, int nbr_gagnant, int nbr_gain, String commentaire, String img) {
            try {
                //A se niveau j'ai déjà toutes les question de ceux concours dans la table Question, cela c'est fait dans ServletClientDao
                PreparedStatement st = con.prepareStatement("INSERT INTO concours (titre,date_debut,date_fin,gain,depot,avec_question,nbr_gagnant,nbr_gain,commentaire,img,nbr_question) values(?,?,?,?,?,?,?,?,?,?,?)");
     
                st.setString(1, titre.toLowerCase());
                st.setDate(2, new Date(new java.util.Date().getTime()));
                try {
                    st.setDate(3, new Date(sdf.parse(date_fin).getTime()));
     
                } catch (Exception ex) {
                    Logger.getLogger(ConcoursDao.class.getName()).log(Level.SEVERE, null, ex);
                    ex.printStackTrace();
                }
     
                st.setString(4, gain.toLowerCase());
                st.setString(5, depot.toLowerCase());
                st.setShort(6, avec_question);
                st.setInt(7, nbr_gagnant);
                st.setInt(8, nbr_gain);
                st.setString(9, commentaire.toLowerCase());
                st.setString(10, img);
                st.setInt(11, nbrQuestion);
                st.executeUpdate();
            } catch (SQLException ex) {
                System.out.println("Exception - requete add_Concour: " + ex.getMessage());
                ex.printStackTrace();
            }
        }
    Merci à tous

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    Bonjour,

    Transaction
    - insert dans la table Concours
    - recuperer le dernier ident de la table Concours
    - insert dans la table Questions
    - recuperer le dernier ident de la table Questions
    - insert dernier ident de Concours et de Questions dans la table voulue

    Quite a chercher la SQL commande pour recuperer le dernier ident d'une table avec Derby.

Discussions similaires

  1. Comment faire une requête via double Dblink
    Par jindono dans le forum Connexions aux bases de données
    Réponses: 7
    Dernier message: 15/10/2010, 03h51
  2. Comment faire une double requête sur une table
    Par giova_fr dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/06/2010, 18h08
  3. [DBF] Comment faire une insertion dans le fichier ?
    Par dor_boucle dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 14/12/2005, 07h46
  4. Comment faire une insertion dans un fichier texte ?
    Par Isa31 dans le forum Langage
    Réponses: 10
    Dernier message: 28/12/2004, 09h06

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