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 :

Problème isertion BD depuis un fichier.data


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 52
    Points
    52
    Par défaut Problème isertion BD depuis un fichier.data
    Bonjour,

    Voila j'ai un problème lors de l'insertion voici le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Exception in thread "main" java.lang.NullPointerException
            at testbd.LectureFichier.lireFichier(LectureFichier.java:49)
            at testbd.LectureFichier.main(LectureFichier.java:81)
    Java Result: 1
    Ce qui veut dire que : une erreur de dépassement mémoire : il y a quelque chose dans mon code qui pointe en dehors de la zone de mémoire allouée, et donc pointe sur null. Mais je ne vois pas où . Car je n'utilise n'y des vecteurs et ni tableau. Après je me suis dis que cela peut venir de ma connexion mais c'est pas possible car toute mes autres fonction (Création de table, requête simple ... ) marche et me renvoi quelque chose et créer bien la table au niveau d'oracle.

    Voici 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
    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
     
    package testbd;
     
    import java.sql.SQLException;
     
    /**
     * Lit un fichier texte et affiche son contenu sur System.out.
     * Les différents éléments de la ligne sont séparés par un ou plusieurs espaces.
     *
     */
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.sql.Connection;
    import java.sql.Statement;
    import java.util.Scanner;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    public class LectureFichier {
     
        private static Statement stmt;
        private static Connection con;
     
        /**
         * Lit un fichier texte contenant les données de la table JoltDate
         * et affiche son contenu sur System.out.
         * Les différents éléments de la ligne sont séparés par un ou plusieurs espaces.
         * @param nomfichierCour le nom du fichier texte à lire
         */
        public static void lireFichier(String nomfichierCour) {
           int i = 0;
            if (nomfichierCour != null) {
     
                try {
     
     
                    Scanner scanner = new Scanner(new File(nomfichierCour));
                    while ((scanner.hasNext())) {
                        // traitement de la ligne courante.
                        // on lit le Nom, le jour et le nombre de tasses
                        String nom = scanner.next();
                        String jour = scanner.next();
                        int nbtasse = scanner.nextInt();
     
                        stmt.executeUpdate("INSERT INTO JoltData VALUES ('" + nom + "', '" + jour + "', '" + nbtasse + "')");
                        con.commit();
     
                    }
                    scanner.close();
     
                } catch (SQLException ex) {
                    try {
                        con.rollback(); // annule les opérations de la transaction
                        while (ex != null) {
                            System.out.println("SQL Exception");
                            System.out.println(ex.getMessage());
                            System.out.println("ANSI-92 SQL State : " + ex.getSQLState());
                            System.out.println("Vendorerrorcode : " + ex.getErrorCode());
                            ex = ex.getNextException();
                        }
                    } catch (SQLException ex1) {
                        Logger.getLogger(LectureFichier.class.getName()).log(Level.SEVERE, null, ex1);
                    }
                }catch (FileNotFoundException ioe) {
                    System.out.println("Fichier " + nomfichierCour + " inexistant");
                    System.exit(0);
     
                }
     
            }
        }
     
        /**
         * programme de test.
         */
        public static void main(String[] args) {
            LectureFichier.lireFichier("C:/UsersDocuments/NetBeansProjects/TestBD/src/testbd/test.data");
        }
    }
    Je vous remercie pour votre aide
    Cordialement.

  2. #2
    Membre actif

    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Points : 295
    Points
    295
    Par défaut
    Bonjour,

    il ne s'agit pas d'un dépassement mémoire mais d'une variable non initialisée.

    Tu essaies d'utiliser ta variable stmt sans l'avoir initialisé au préalable.
    Celle-ci doit etre initialisée du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stmt = con.createStatement();
    avant d'être utilisable.

    Comme tu vas le constater aussi, ta variable con n'est pas initialisée non plus, il te faudra donc le faire pour que cela fonctionne :
    http://java.developpez.com/faq/jdbc/?page=connection

    Enfin, dans le cadre de la modification de fichier plat,
    je te conseille plutôt de lire le fichier via l'API I/O de Java et non passer par JDBC, ne l'ayant jamais fait, je suis d'ailleurs même pas sur que cela fonctionne :
    http://java.developpez.com/faq/java/...ngage_fichiers

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/02/2012, 17h42
  2. Problème pour copier depuis un fichier
    Par Tilan dans le forum C
    Réponses: 4
    Dernier message: 27/05/2010, 11h38
  3. Problème d'importation depuis fichier xls.
    Par penchu dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/05/2007, 11h42
  4. Réponses: 5
    Dernier message: 03/04/2007, 16h11
  5. problème de lecture depuis un fichier texte
    Par [Hugo] dans le forum C++
    Réponses: 12
    Dernier message: 27/10/2006, 16h46

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