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 :

Remplir une table à partir du résultat d'une requête SQL (sous JAVA)


Sujet :

JDBC Java

  1. #1
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut Remplir une table à partir du résultat d'une requête SQL (sous JAVA)
    Salut tout le monde,
    Je voudrais savoir comment je peux remplir une table d'une BD MySQL à partir d'une autre table.
    J'exécute la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    SELECT date,r_host,count(r_host) from essai group by r_host
     order by count(r_host) desc
    et puis je veux remplir à partir du résultat de cette requête une autre table qui contient 3 champs "date, r_host, nb_visites".

    Pourriez vous m'aider
    Merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 24
    Points
    24
    Par défaut
    salut,
    quand vous recupérez votre resultat de la requete selection,tu execute pour chaque ligne une requete d'insertion pour l'autre table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String sql="SELECT date,r_host,count(r_host) as nb from essai group by r_host order by count(r_host) desc";
    ResultSet rs=statement.executeQuery(sql);
    while (rs.next){
    String sqlinsert="insert into table values('"+rs.getDate("date")+"','"+rs.getString("r_host")+"',"+rs.getInt("nb")+")";
    int i=statement1.executeUpdate(sqlinsert);}

  3. #3
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ou alors simplement en requtee SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table VALUES (SELECT * FROM table2)
    enfin en adaptant la requete à ce que tu veux vraiment ...

  4. #4
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut
    Salut voila ce que j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    try {
              Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "root");
              Statement instruction = connexion.createStatement();                   
              String sql_insert="insert into top_user (date,username,volume) 
    values(SELECT date,username,count(username) as compte from proxy
     group by username order by count(username) desc)";
             instruction.executeUpdate(sql_insert);
     
            }
     catch (Exception e) 
           {
                 e.printStackTrace();
            }
    Mais il y a une erreur qui apparaît
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:
    You have an error in your SQL syntax; check the manual that corresponds to
     your MySQL server version for the right syntax to use near 'SELECT
     date,username,count(username) as compte from proxy group by username orde' at line 1

  5. #5
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    essaie d'effectuer ta requete direct dans la bdd pour voir si elle marche et la corriger le cas échéant ...

  6. #6
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut
    J'ai essayé mais ça ne marche pas

  7. #7
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut
    J'ai essayé ce code aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    String sql_select = "SELECT date,username,count(username) as compte from proxy group by username order by count(username) desc" ;
              ResultSet resultat = instruction.executeQuery(sql_select);
               while (resultat.next())
                {
     
               System.out.println("Date     : "+ resultat.getDate("date"));
               System.out.println("username : "+ resultat.getString("username"));
               System.out.println("Compte   : "+ resultat.getInt("compte"));
               System.out.println("---------------------------------------");          
               instruction.executeUpdate("insert into top_user (date,username,volume) values('2006-08-09','user1','200')");
     
                }
    Mais cette erreur aparaît:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    java.sql.SQLException: Operation not allowed after ResultSet closed

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 24
    Points
    24
    Par défaut
    oui c normal, parceque vous avez utilisé le meme statement pour deux resultset en meme temps.
    faut declarer un autre statement et l'utiliser dans la requete d'insertion

  9. #9
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut
    Merci beaucoup,
    Le problème est résolu.
    A bientôt.

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

Discussions similaires

  1. UPDATE d'une table à partir des résultats d'une requête
    Par pascal_06 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/12/2013, 15h08
  2. Alimenter une table à partir du résultat d'une requete
    Par flateur18 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 05/04/2011, 10h24
  3. [AC-97] Création d'une table à partir des résultats d'une requete analyse croisée
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/11/2009, 21h46
  4. Mise à jour d'une table à partir du résultat d'une requête
    Par zoharcryss dans le forum Langage SQL
    Réponses: 12
    Dernier message: 18/08/2009, 15h33
  5. Remplir une table avec le résultat d'une instruction SQL
    Par jbeu dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/09/2007, 23h49

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