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 :

Double requete (master-detail)


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 9
    Par défaut Double requete (master-detail)
    Bonjour,

    Je me bas avec jdbc depuis plusieurs heures et là, je suis bloqué. Si quelqu'un a une solution au problème suivant, je lui serait très reconnaissant.

    Voila mon 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
     
    public static void main(String[] args) throws Exception {
            String driverNameFB = "org.firebirdsql.jdbc.FBDriver";
            Class.forName(driverNameFB);
     
            String serverNameFB = "localhost/3050";
            String mydatabaseFB = "C:\\data\\data.GDB";
            String urlFB = "jdbc:firebirdsql:" + serverNameFB + ":" + mydatabaseFB;
     
            String usernameFB = "SYSDBA";
            String passwordFB = "masterkey";
            DriverManager.setLoginTimeout(0);
     
            Connection connectionFB = DriverManager.getConnection(urlFB, usernameFB, passwordFB);
     
            //j'ai besoin du ResultSet.TYPE_SCROLL_INSENSITIVE dans mon projet
            Statement stm = connectionFB.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);
            String sql = "select * from tableA";
            ResultSet rs = stm.executeQuery(sql);
            rs.first();
     
            while (rs!=null && !rs.isAfterLast()) {
               System.out.println(rs.getString("namea"));
               Statement stm2 = connectionFB.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);
               String sql2 = "select * from tableB where bid="+rs.getString("ida");
               ResultSet rs2 = stm2.executeQuery(sql2);
               rs2.first();
               while (rs2!=null && !rs2.isAfterLast()) {
                   System.out.println("      "+rs2.getString("nameb"));
     
                   rs2.next();
               }
               rs.next();
            }
    }
    voici le contenu de mes tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Table A               Table B
    id  namea             id ida nameb
    1   Table A : AAAA    1   1  Table b : aaaaa 1
    2   Table A : BBBB     2   1  Table b : aaaaa 2
                                 3   1  Table b : aaaaa 3
                                 4   1  Table b : aaaaa 4
                                 5   1  Table b : aaaaa 5
                                 6   1  Table b : aaaaa 6
                                 7   2  Table b : bbbbb 1
                                 8   2  Table b : bbbbb 2
                                 9   2  Table b : bbbbb 3
    Et bien, j'ai beau tourner le problème dans tous les sens, la méthode rs.isAfterLast() retourne toujours true a la fin du traitement de rs2 . Comme si le second enregistrement de la table a n'existait pas.

    je dois pas faire comme il faut (je débute avec java).

    merci de votre aide
    Olivier

    Information complémentaire :
    ce même code fonctionne correctement avec le driver MySQL. le seul problème est que j'ai besoin attaquer une base firebird

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 9
    Par défaut
    Je me réponds à moi même. C'est apparemment, une spécification de JDBC3. C'est nulle mais c'est comme ça (je ne vois pas trop l'intérêt de fermer les précédentes requêtes automatiquement)

    Alors pour ceux que ça intéresse, la solution est de mettre l'autocomit à false et dans ce cas, ça fonctionne avec JayBird

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

Discussions similaires

  1. Double requete avec alter table
    Par bdorbo dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/05/2007, 07h57
  2. master detail -dbLookupComboBox
    Par atb dans le forum Bases de données
    Réponses: 1
    Dernier message: 10/04/2007, 19h23
  3. DOUBLE REQUETE SUR UNE MEME TABLE
    Par MORAS dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/01/2006, 14h40
  4. Double requete avec curseur.
    Par elkamy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/01/2006, 12h35
  5. [Forms] Debugger/Pb canevas-relation Master/detail
    Par lafouine dans le forum Forms
    Réponses: 16
    Dernier message: 12/08/2005, 19h51

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