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 :

[jdbc][oracle] j'arrive pas à utilser resultats requette!


Sujet :

JDBC Java

  1. #1
    Membre du Club Avatar de thief
    Inscrit en
    Décembre 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut [jdbc][oracle] j'arrive pas à utilser resultats requette!
    Bonjour !
    J'ai des soucis depuis hier avec ce bout de code!
    Je l'ai mis avec le code d'erreur qu'il m'envoie. Une exception de nullpointer s'eleve et je ne sais pas pourkoi! Comme vous pouvez le remarquer toutes les variables sont initialisée avant les utilisation!
    Je vous serai reconnaissant pour votre aide!
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
     
    package controle_facturation;
     
        import java.io.*;
        import java.sql.*;
        import java.util.*;
        import oracle.jdbc.driver.OracleDriver;
     
        class java_oracle {
                            Connection con;
                            ResultSet results;
                            ResultSetMetaData rsmd;
                            //----------------------------
                            public java_oracle() {
                                            try {
                                                  results = null;
                                                                                               DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
     
                                            }
                                            catch (Exception e) {
                                                   System.out.println("Erreur lors du chargement du driver:"+ e.getMessage());
                                           }
                           }
     
                                      //------------------------------------------------------
                          public boolean ouvre(String piloteODBC) {
                                   boolean ok = false;
     
                                     try { 
                                          con = DriverManager.getConnection(piloteODBC,"user1","password1");
                                          ok = true;
                                     }
                                    catch (SQLException e) {
                                          System.out.println("echec d'ouverture:" + e.getMessage());
                                          ok = false;
                                    }
                                return (ok);
                       }
     
                    //-----------------
                      public boolean ferme() {
                             boolean ok = false;
                             try {
                                  con.close();
                                  ok = true;
                             }
                             catch (SQLException e) {
                                                   System.out.println("echec lors de la fermeture:" + e.getMessage());
                                                   ok = false;
                              }
                             return ok;
                        }
     
                      //------------------------------------------------
                    public void executeRequete(String requete) {
                                                     try {
                                                           Statement stmt = con.createStatement();
                                                           results = stmt.executeQuery(requete);
                                                     }
                                                    catch (SQLException e) {
                                                                            System.out.println("Erreur requête : " + e.getMessage());
                                                    }
                    }
     
                  public ResultSet getResult() {
                              return results;
                  }
     
                  public void recupDonnees() {
                                            try {
                                                rsmd = results.getMetaData();
                                            }
                                           catch (SQLException e) {
                                                                   System.out.println("Erreur données:" + e.getMessage());
                                           }
                  }
                 public int getNbColonne() {
                                          int nbCols = 0;
                                          try {
                                            nbCols = rsmd.getColumnCount();
                                          }
                                          catch (SQLException e) {
                                                        System.out.println("Erreur nombre de colonnes:" + e.getMessage());
                                          }
                                          return nbCols;
                 }
                 public boolean ligneSuivante() {
                                   boolean encore = false;
                                   try {
                                       encore = results.next();
                                   }
                                       catch (SQLException e) {
                                  }
                      return encore;
                 }
     
                 public String getValeur(int i) {
                                   String valeur = "";
                                   try {
                                         valeur = results.getString(i);
                                   }
                                   catch (SQLException e) {
                                   }
                                  return valeur;
                 }
     
                 public ResultSetMetaData getDonnees() {
                                                      return rsmd;
                 }
     
                public Vector getNomColonne() {
                                              Vector vec = new Vector();
                                         for (int i = 1; i <= this.getNbColonne(); i++) {
                                                                                         try {
                                                                                               vec.add(rsmd.getColumnName(i));
                                                                                         }
                                                                                         catch (SQLException e) {
                                                                                         }
                                           }
                                         return vec;
                 }
     
              //extrait les données de la requête dans un fichier csv
               public void write_csv(String nomFichier) {
                                                         Vector vec = getNomColonne();
                                                       try {
                                                              BufferedWriter out = new BufferedWriter(new FileWriter(nomFichier));
     
                                                              for (int i = 1; i <= this.getNbColonne(); i++) {
                                                                                                              out.write( (String) vec.elementAt(i - 1));
                                                                                                               if (i != this.getNbColonne()) {
                                                                                                                                                out.write(";");
                                                                                                                }
                                                                                                               else {
                                                                                                                     out.newLine();
                                                                                                                }
                                                                }
     
                                                                boolean encore = this.ligneSuivante();
                                                                while (encore) {
                                                                                for (int i = 1; i <= this.getNbColonne(); i++) {
                                                                                                                                 out.write(this.getValeur(i));
                                                                                                                                 if (i != this.getNbColonne()) {
                                                                                                                                                                out.write(";");
                                                                                                                                  }
                                                                                                                                 else {
                                                                                                                                      out.newLine();
                                                                                                                                 }
                                                                                  }
     
                                                                                 encore = this.ligneSuivante();
                                                                    }
                                                                    out.close();
                                                             }
                                                         catch (FileNotFoundException e) {
                                                                        // TODO Auto-generated catch block
                                                                                         e.printStackTrace();
                                                         }
                                                         catch (IOException e) {
                                                                          // TODO Auto-generated catch block
                                                                                 e.printStackTrace();
                                                         }
                  }
                  public static void main(String arg[]){
                                                        java_oracle test=new java_oracle();
                                                        test.ouvre("jdbc:oracle:thin:@10.02.0.56:1521:base_siege");
                                                        test.executeRequete("select groupe1_id from table_groupe");
                                                        test.write_csv("c:\test.txt");
     
                  }
     
      }
    Voila le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    java.lang.NullPointerException
     
    	at controle_facturation.java_oracle.getNbColonne(java_oracle.java:81)
     
    	at controle_facturation.java_oracle.getNomColonne(java_oracle.java:116)
     
    	at controle_facturation.java_oracle.write_csv(java_oracle.java:128)
     
    	at controle_facturation.java_oracle.main(java_oracle.java:171)
     
    Exception in thread "main"
    [/code]
    Dieu ne joue pas aux Dés...!( Einstein Albert)
    Il n'ya pas de hasard, tout est observation analyse et conclusion!

  2. #2
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Je te conseille deja une chose :
    faire des sorties console ( basiques du type " 1" "2" "3" etc ) assez regulierement afin de voir exactement ou se trouve l'erreur. Ca peut reduire le champ de recherche.
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  3. #3
    Membre du Club Avatar de thief
    Inscrit en
    Décembre 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    Merci pour ton conseil!
    Dans le message d'erreur il y'a le nom de la methode alors je pensais cela reduira le champ de recherche!
    Dieu ne joue pas aux Dés...!( Einstein Albert)
    Il n'ya pas de hasard, tout est observation analyse et conclusion!

  4. #4
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par thief
    Merci pour ton conseil!
    Dans le message d'erreur il y'a le nom de la methode alors je pensais cela reduira le champ de recherche!
    oui ca reduit en effet mais pas tant que ca ...
    en fait souvent il marque l'endroit ou se situe l'erreur mais c'est assez approximatif ... (enfin perso ca m'est arrivé plusieurs fois que ca bugge dans une methode et qu'il m'en indique une autre ...)
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  5. #5
    Membre du Club Avatar de thief
    Inscrit en
    Décembre 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    Du nouveau!
    Quant j'initialise mes variable de classe comme suit il y'a plus d'erreurs mais j'ai pas de resultats et pourtant ma requette est correcte et ma table est loin d'etre vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Connection con=null;
    ResultSet results;
    ResultSetMetaData rsmd=null;
    Au secours!!!
    Dieu ne joue pas aux Dés...!( Einstein Albert)
    Il n'ya pas de hasard, tout est observation analyse et conclusion!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 94
    Points : 113
    Points
    113
    Par défaut
    recupDonnees() qui doit recuperer les Metadatan'est jamais utilisé ...

    alors rsmd est null ..

  7. #7
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par thief
    Du nouveau!
    Quant j'initialise mes variable de classe comme suit il y'a plus d'erreurs mais j'ai pas de resultats et pourtant ma requette est correcte et ma table est loin d'etre vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Connection con=null;
    ResultSet results;
    ResultSetMetaData rsmd=null;
    Au secours!!!
    Euh apres une verif rapide (!!) tu n'initialise pas rmsd ..( enfin c'est fait dans recupDonnees mais tu n'appelles pas cette méthode enfin j'ai pas vu ca moi )
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  8. #8
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Verifie que tu appelles bien ta méthode
    recupDonnees ();
    C'est elle qui crée l'objet ResultSetMetaData.
    D'aprés ton msg d'erreur c'est lui qui ne semble pas instancié.

    A +

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 94
    Points : 113
    Points
    113
    Par défaut
    test.write_csv("c:\\test.txt");


    N'oublie pas modifier ton nom de fichier en ajoutant un deuxième "\".
    Sinon c'et la tabulation et le nom de fichier est faux.

    Cela donne un resultat !!!

  10. #10
    Membre du Club Avatar de thief
    Inscrit en
    Décembre 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    ça marche mai,tenant grace à vous!
    J'ai pris en consideration les conseils de tout el monde et j'en suis heureux!
    Voici le code des changements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public int getNbColonne() {
                                          int nbCols = 0;
                                          [b]this.recupDonnees();[/b]                                      try {
                                            nbCols = rsmd.getColumnCount();
                                          }
                                          catch (SQLException e) {
                                                        System.out.println("Erreur nombre de colonnes:" + e.getMessage());
                                          }
                                          catch (java.lang.NullPointerException e){}
                                          return nbCols;
                 }
    et dans main!:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    [b]test.write_csv("c:\\test.txt");[/b]
    mille merci!
    ...
    Dieu ne joue pas aux Dés...!( Einstein Albert)
    Il n'ya pas de hasard, tout est observation analyse et conclusion!

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

Discussions similaires

  1. [Oracle 10g] j'arrive pas à changer NLS_LENGTH_SEMANTICS
    Par fguigui dans le forum Administration
    Réponses: 16
    Dernier message: 23/04/2007, 12h33
  2. Réponses: 13
    Dernier message: 09/01/2007, 13h19
  3. [Oracle/ASP.Net] Pourquoi je n'arrive pas à charger oci.dll ?
    Par zakaria_jd dans le forum Accès aux données
    Réponses: 1
    Dernier message: 01/08/2006, 12h25
  4. requette sql qui passe sous oracle 9i mais pas en 8i
    Par maxidoove dans le forum Oracle
    Réponses: 3
    Dernier message: 21/10/2005, 10h59
  5. Réponses: 10
    Dernier message: 17/10/2005, 11h07

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