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 :

Exception Access après insertion


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 26
    Points
    26
    Par défaut Exception Access après insertion
    Bonjour à tous,

    J'ai une erreur sur une de mes méthodes que je ne comprend pas. Le principe de la méthode est très simple. J'insère chaque ligne d'un fichier texte (1.000.000 de lignes) (après un petit traitement) dans une table de base de donnée Access.

    Voici l'exception que me retourne la machine virtuelle après avoir inséré dans ma base de donnée environ 150.000 lignes. J'ai pensé qu'Access perdait peut-être les pédales avec l'insertion massive de lignes mais... si c'est le cas je ne sais pas comment corriger mes méthodes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Impossible d'ouvrir plus de tables.
    	at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source)
    	at actionbdd.ConnectionBDD.executeRequeteInsert(ConnectionBDD.java:151)
    	at actionbdd.ImportationTexte.importAccess(ImportationTexte.java:156)
    	at fr.lesmureaux.mairie.dsi.Main.main(Main.java:128)
    La portion du main incriminée :
    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
     
            // INSERTION DU FICHIER DANS LA BASE DE DONNEES
            System.out.println("3- INSERTION DU FICHIER DANS LA BASE DE DONNEES");
     
            try {
                System.out.println(ift.getCheminInsertion());
                System.out.println(ift.importAccess(nomNewTable,
                        "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="
                        + ift.getCheminInsertion().replace('\\', '/')));
     
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
    La méthode ImportAccess :
    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
     
        /**
         * Méthode qui importe le fichier dans la table d'une base de donnée.
         * @param nomTable nom de la table où l'on importe le fichier
         * @param chaineBase chaîne de connection à la base de donnée
         * @return Retourne le nombre de tuple importé dans la table
         * @throws FileNotFoundException lancée si le fichier précisé dans
         *         l'objet ImportationTexte n'existe pas
         * @throws IOException lancée en cas d'erreur d'I/O
         * @throws ClassNotFoundException lancée ...
         * @throws SQLException en cas d'erreur de requête
         */
        public int importAccess(String nomTable, String chaineBase)
                throws FileNotFoundException, IOException, ClassNotFoundException,
                SQLException {
            FileReader fr = new FileReader(this.cheminMiseEnForme);
            BufferedReader br = new BufferedReader(fr);
            String s = null;
            StringTokenizer tokenizer = null;
            StringBuffer req = new StringBuffer("");
            ConnectionBDD connection = new ConnectionBDD(chaineBase);
            int nb = 0;
            Connection connect = connection.connectBaseAccess();
     
            while (br.ready()) {
                s = br.readLine();
                tokenizer = new StringTokenizer(s, "\t");
                req = new StringBuffer("Insert into ");
                req.append(nomTable);
                req.append(" values(");
     
                while (tokenizer.hasMoreTokens()) {
                    req.append("'");
                    req.append(tokenizer.nextToken());
                    req.append("', ");
                }
     
                StringBuffer reqFin = new StringBuffer(req.substring(0, req
                        .length() - 2));
                reqFin.append(");");
     
                nb = nb + 1;
                connection.executeRequeteInsert(connect, reqFin.toString());
                connect.commit();
            }
            connect.close();
            br.close();
            fr.close();
     
            return nb;
        }
    La méthode executeRequeteInsert :
    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
     
        /**
         * Méthode pour exécuter un INSERT sur une base de donnée précisée en
         * paramètre.
         * @throws SQLException lancée s'il y a un problème de syntaxe avec la
         *         requête
         * @param requete variable contenant la requête INSERT à exécuter
         * @param connection variable qui gère la connection à la BDD
         * @return Renvoi le nombre de tuple inséré par la requête
         */
        public int executeRequeteInsert(Connection connection, String requete)
                throws SQLException {
            Statement stmt = null;
            int rs = 0;
     
            stmt = connection.createStatement();
            System.out.println("req = " + requete);
            rs = stmt.executeUpdate(requete);
     
            return 1;
        }
    Merci pour votre aide,

  2. #2
    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
    je dis ça sans trop de conviction mais as tu essayé de faire un commit de temps en temps ... il est possible qu'il y est trop de modifications en attente de validation ... ?

    Sinon, pour l'insertion en masse de données, le mieux est de passer par un preparedStatement et un batch que tu executes toutes les 5000 lignes par exemple.

    Je serais toi je créerais le statement dans la méthode "importAccess". Parce que si tu le fais à chaque ligne c'est trop lourd (en fait ça doit être ça le pb). Il faut fermer le statement aussi (dans un bloc finally).

    Il faut également que tu fermes ta connexion dans un bloc finally.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 26
    Points
    26
    Par défaut
    Merci pour ta réponse, je crois que j'ai de la matière pour tester de nouvelles solutions !

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    J'ai donc testé la solution de bien fermer le statement dans le main. Maintenant j'arrive à insérer mes 1.000.000 de lignes (sans utiliser de preparedStatement, ni de batch) dans la base de donnée. Le problème c'est qu'ensuite j'ai un problème de mémoire avec Java quand je veux faire traitements sur les données de la bases.

    Maintenant mon problème de mémoire ne se réglera pas d'un seul coup je pense car le but final de l'application que je développer est de fusionner dans une table par mois des logs de connexion journalier (1.000.000 logs par jour) soit 30.000.000 logs. Puis de faire des rapports à partir de cette table.

    Merci de votre aide

    Exception lancée par l'exécution du main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    1- MISE EN FORME DU FICHIER A IMPORTER AVANT INSERTION
    1037021
    2- CREATION DE LA NOUVELLE TABLE
    3- INSERTION DU FICHIER DANS LA BASE DE DONNEES
    G:\Commun\Julien Gavard\resources\20072.mdb
    1037021
    5- GENERER LE OU LES RAPPORTS A PARTIR DE LA BASE DE DONNEES
    id = 2
    java.lang.OutOfMemoryError: Java heap space
    id = 3
    java.lang.OutOfMemoryError: Java heap space
    Portion du main :
    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
     
            // INSERTION DU FICHIER DANS LA BASE DE DONNEES
            System.out.println("3- INSERTION DU FICHIER DANS LA BASE DE DONNEES");
     
            try {
                System.out.println(ift.getCheminInsertion());
                System.out.println(ift.importAccess(nomNewTable,
                        "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="
                        + ift.getCheminInsertion().replace('\\', '/')));
     
            } catch (OutOfMemoryError e) {
                System.out.println("id = 1");
                e.printStackTrace();
            }
            catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
     
            /* File supprMiseEnForme = new File(ift.getCheminMiseEnForme()); File
             * supprInsert = new File(ift.getCheminImport());
             * 
             * supprMiseEnForme.delete(); supprInsert.delete();
             */
     
            // GENERER LE OU LES RAPPORTS A PARTIR DE LA BASE DE DONNEES
            System.out
            .println("5- GENERER LE OU LES RAPPORTS A PARTIR DE LA BASE DE"
                    + " DONNEES");   
     
            // GENERATION DES INFORMATIONS
            String cheminRapportTxt = res.getString("cheminResourcesUtilisateur");
            RapportTxt rTXT = new RapportTxt(cheminRapportTxt
                    .replace('\\', '/'));
     
            try {
                rTXT.setFileName("nb_visite_par_mois");
                rTXT.comptageNbVisiteParMois("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="
                        + ift.getCheminInsertion().replace('\\', '/'), nomNewTable);
            } catch (OutOfMemoryError e) {
                System.out.println("id = 2");
                e.printStackTrace();
            } 
            catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
     
     
            try {
                rTXT.setFileName("nb_visite_par_mois_par_service");
                rTXT.comptageNbVisiteParMoisParService("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="
                        + ift.getCheminInsertion().replace('\\', '/'), nomNewTable);
            } catch (OutOfMemoryError e) {
                System.out.println("id = 3");
                e.printStackTrace();
            } 
            catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
     
            // GENERATION DES RAPPORTS                
            String rapport = "";
            String cheminRapport = res.getString("cheminRapport");
            RapportHtml rHTML = new RapportHtml(cheminRapport
                    .replace('\\', '/'));
            rHTML.setCheminCss(res.getString("cheminCss"));
     
            try {
                rHTML.setFileName("nb_visite_site_par_user");
                rapport = rHTML.rapportNbConnectParSiteParUser("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="
                        + ift.getCheminInsertion().replace('\\', '/'), nomNewTable, rHTML.getCheminCss());
                rHTML.save(rapport);
     
                for (int i = 0; i < cat.size(); i++) {
                    rHTML.setFileName("nb_visite_site_par_user_pour_le_service_" + cat.get(i));
                    rapport = rHTML.rapportNbConnectParSiteParService("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="
                            + ift.getCheminInsertion().replace('\\', '/'), nomNewTable, rHTML.getCheminCss(), cat.get(i));
                    rHTML.save(rapport);
                }
     
                rHTML.setFileName("nb_visite_par_site");
                rapport = rHTML.rapportNbVisiteParSite("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="
                        + ift.getCheminInsertion().replace('\\', '/'), nomNewTable, rHTML.getCheminCss());
                rHTML.save(rapport);
     
                rHTML.setFileName("nb_visites_mensuelles_par_service");
                rapport = rHTML.rapportVisitesMensuellesParService(cheminRapportTxt.replace('\\', '/'), "nb_visite_par_mois_par_service.txt");
                rHTML.save(rapport);
     
                rHTML.setFileName("nb_visites_mensuelles");
                rapport = rHTML.rapportVisitesMensuelles(cheminRapportTxt.replace('\\', '/'), "nb_visite_par_mois.txt");
                rHTML.save(rapport);
            } catch (OutOfMemoryError e) {
                System.out.println("id = 4");
                e.printStackTrace();
            }
            catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("7- FIN DU MAIN");
    Méthode importAccess :
    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
     
    /**
         * Méthode qui importe le fichier dans la table d'une base de donnée.
         * @param nomTable nom de la table où l'on importe le fichier
         * @param chaineBase chaîne de connection à la base de donnée
         * @return Retourne le nombre de tuple importé dans la table
         * @throws FileNotFoundException lancée si le fichier précisé dans
         *         l'objet ImportationTexte n'existe pas
         * @throws IOException lancée en cas d'erreur d'I/O
         * @throws ClassNotFoundException lancée ...
         * @throws SQLException en cas d'erreur de requête
         */
        public int importAccess(String nomTable, String chaineBase)
                throws FileNotFoundException, IOException, ClassNotFoundException,
                SQLException {
            FileReader fr = new FileReader(this.cheminMiseEnForme);
            BufferedReader br = new BufferedReader(fr);
            String s = null;
            StringTokenizer tokenizer = null;
            StringBuffer req = new StringBuffer("");
            ConnectionBDD connection = new ConnectionBDD(chaineBase);
            int nb = 0;
            Connection connect = connection.connectBaseAccess();
            Statement stmt = connect.createStatement();
     
            while (br.ready()) {
                s = br.readLine();
                tokenizer = new StringTokenizer(s, "\t");
                req = new StringBuffer("Insert into ");
                req.append(nomTable);
                req.append(" values(");
     
                while (tokenizer.hasMoreTokens()) {
                    req.append("'");
                    req.append(tokenizer.nextToken().replace("\'", ""));
                    req.append("', ");
                }
     
                StringBuffer reqFin = new StringBuffer(req.substring(0, req
                        .length() - 2));
                reqFin.append(");");
                nb = nb + 1;
                stmt.executeUpdate(reqFin.toString());
     
                connect.commit();
            }
            stmt.close();
            connect.close();
            br.close();
            fr.close();
     
            return nb;
        }
    Méthode comptageNbVisiteParMois :
    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
     
    /**
         * Méthode qui compte le nombre de connexion (chaque ligne du Vecteur)
         * 
         * @exception IllegalArgumentException
         *                lancée si le vecteur passé en paramètre est null
         * @param rep
         *            résultat d'un SELECT sur une BDD (une colonne nécessaire, 
         *            celle des logins qui se sont connectés)
         * @throws IOException 
         * @throws SQLException 
         * @throws ClassNotFoundException 
         */
        public void comptageNbVisiteParMois(String bdd, String nomNewTable) throws IllegalArgumentException, IOException, SQLException, ClassNotFoundException {
            // Récupération des informations de la BDD
            ConnectionBDD connectBDD = new ConnectionBDD(bdd);
            Connection connect = connectBDD.connectBaseAccess();
            Vector v = new Vector();
            v = connectBDD
            .executeRequeteSelect(
                    connect,
                    "Select username_conso from "
                            + nomNewTable);
            connect.commit();
            connect.close();
     
            Calendar calend = Calendar.getInstance();        
            FileOutputStream fostream = new FileOutputStream(this.cheminRapport
                    + "/" + this.fileName + "." + this.extension, true);
            String nb = new Integer(v.size()).toString();
     
            fostream.write((new Integer(calend.get(Calendar.YEAR))).toString().getBytes());
            if((calend.get(Calendar.MONTH) + 1) < 10) {
                fostream.write("0".getBytes());
            }
            fostream.write((new Integer(calend.get(Calendar.MONTH) + 1)).toString().getBytes());
            fostream.write("=".getBytes());
            fostream.write(nb.getBytes());
            fostream.write("\n".getBytes());
            fostream.close();
        }
    Méthode comptageNbVisiteParMoisParService :
    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
     
    /**
         * Méthode qui compte le nombre de connexion par service pour les lignes du Vecteur
         * 
         * @exception IllegalArgumentException
         *                lancée si le vecteur passé en paramètre est null
         * @param rep
         *            résultat d'un SELECT sur une BDD (une colonne nécessaire, 
         *            celle des logins qui se sont connectés)
         * @throws IOException 
         * @throws SQLException 
         * @throws ClassNotFoundException 
         */
        public void comptageNbVisiteParMoisParService(String bdd, String nomNewTable) throws IllegalArgumentException, IOException, ClassNotFoundException, SQLException {
            // Récupération des informations de la BDD
            ConnectionBDD connectBDD = new ConnectionBDD(bdd);
            Connection connect = connectBDD.connectBaseAccess();
            Vector v = new Vector();
            v = connectBDD
            .executeRequeteSelect(
                    connect,
                    "Select username_conso from "
                            + nomNewTable);
            connect.commit();
            connect.close();
     
            ArrayList<String> nom = new ArrayList<String>();
            ArrayList<Integer> nombre = new ArrayList<Integer>();
     
            ResourceBundle resourcePersonne = ResourceBundle
            .getBundle("ConvLoginPersonne");
            ResourceBundle resourceService = ResourceBundle
            .getBundle("ConvLoginService");
     
            String allPerson = "";
            for (Enumeration e = resourcePersonne.getKeys(); e.hasMoreElements();) {
                allPerson = allPerson + e.nextElement() + " ";
            }
            allPerson = allPerson.trim();
     
            for (int i = 0; i < v.size(); i++) {
                Vector work = (Vector) v.elementAt(i);
                String user = (String) work.elementAt(0);
                user = user.substring(3, user.length());
                String serviceIp = "";
     
                if(allPerson.contains(user)) {
                    serviceIp = resourceService.getString(user);
     
                    if(nom.contains(serviceIp)) {
                        int index = nom.indexOf(serviceIp);
                        int nb = (Integer)nombre.get(index);
                        nombre.set(index, new Integer(nb + 1));
                    }
                    else {
                        nom.add(serviceIp);
                        nombre.add(new Integer(1));
                    }
                }            
            }       
     
            FileOutputStream fostream = new FileOutputStream(this.cheminRapport
                    + "/" + this.fileName + "." + this.extension, true);
     
            Calendar calend = Calendar.getInstance();
            String flag = "";
            if((calend.get(Calendar.MONTH) + 1) < 10) {
                flag = "0";
            }
            fostream.write((new Integer(calend.get(Calendar.YEAR))).toString().getBytes());
            if(flag == "0") {
                fostream.write(flag.getBytes());
            }
            fostream.write((new Integer(calend.get(Calendar.MONTH) + 1)).toString().getBytes());
            fostream.write("\n".getBytes());
     
            for (int i = 0; i < nom.size(); i++) {
                fostream.write(nom.get(i).getBytes());
                fostream.write("=".getBytes());
                fostream.write(nombre.get(i).toString().getBytes());
                fostream.write("\n".getBytes());
            }
            fostream.close();
        }

  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
    tu ne sais pas à quel endroit des méthode de comptage ça plante ?

    sinon, j'ai vu que tu utilisais un Vector. Si tu n'est pas en multithread, il est conseillé d'utiliser une ArrayList à la place ...

    Sinon, juste une question, n'est il pas possible avec Access, d'importer directement un fichier de données, comme le SQLLoader de Oracle ? Genre importer un fichier csv ? Ca pourrait être utile ...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 26
    Points
    26
    Par défaut
    Oh la la la, j'avais pas pensé à ça. En fait, je ne savais pas ça possible en automatique avec Java. Il faudra que je cherche sérieusement.

    Pour le vector, tu as raison, je ne suis pas en multi-thread.

    Pour le plantage, je pense que ça plante au moment de l'appel à comptageNbVisiteParMoisParService() et comptageNbVisiteParMois()

    En tout cas, je ne pourrais pas tester ça avant quinze jours... pour cause de vacances.

    Merci pour toutes tes réponses, je testerais tout ça.

  7. #7
    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
    Citation Envoyé par jgavard
    Pour le plantage, je pense que ça plante au moment de l'appel à comptageNbVisiteParMoisParService() et comptageNbVisiteParMois()
    ben oui moi aussi, mais le printStackTrace ne te dis rien ?

    le fichier ouvert doit être trop gros. si tu ne peux pas le faire par import d'un fichier de données, il va falloir que tu passes par ton traitement mais en plusieurs fois ...

    Sinon ben bonne vacances ( )

Discussions similaires

  1. [WD-2013] Répéter contenu signet après insertion depuis Access
    Par Doken dans le forum Word
    Réponses: 12
    Dernier message: 12/09/2013, 11h42
  2. [ASP.NET-ACCESS] probleme d'update apres insertion
    Par come18 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/05/2007, 12h59
  3. [VB.NET] [ADO.NET] Récupérer id après insertion
    Par nashouille dans le forum Accès aux données
    Réponses: 9
    Dernier message: 09/01/2005, 15h54
  4. [JDBC][MS ACCESS] probleme insertion de date
    Par darius_the_first dans le forum JDBC
    Réponses: 2
    Dernier message: 10/12/2004, 18h04
  5. récupérer valeur d'un ID après insertion
    Par rikidi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/08/2003, 22h21

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