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

Java Discussion :

ACCESS VIOLATION EXCEPTION


Sujet :

Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut ACCESS VIOLATION EXCEPTION
    mon programme souffre d'une ACCESS_VIOLATION_EXCEPTION
    j'ai cherché dans le code et j'ai découvert l'origine de l'exception:
    j'utilise une suite de méthodes : à chacune je passe un paramètre qui n'est rien d'autre qu'une connexion JDBC.j'ai remarque que à la fin de la première méthode qui a utilisé ma connexion cette dernière est fermée.du la méthode suivante
    appel une connexion fermée ce qui déclenche ACCESS_VIOLATION_EXCEPTION
    dans l'API java.sql.Connection il est précisé qu'une connexion n'est fermée que suite à l'appel de la méthode close ou dans le cas d'une erreur fatal.
    merci de m'aider sur ce coup.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 121
    Points
    121
    Par défaut
    Met ton code et met l'exception entière

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut voici le code java
    public String reporting(int tag,Date d,Connection connect){

    Utilitaires util=new Utilitaires();

    if(util.estWeekEnd(d,connect)) return Etat.weekend;

    if(util.estFerie(d,connect) ) return Etat.fete;

    if(util.estEnConge(tag,d,connect)) return Etat.conge;

    if(util.estEnArret(tag, d,connect)) return Etat.arret;

    if(util.estEnMission(tag, d,connect)) return Etat.mission;

    return util.control_presence(tag, d,connect);

    }

    le fichier générer par l'ACCESS_VIOLATION_EXCEPTION
    prècise que :
    Stack: [0x02f60000,0x02fb0000), sp=0x02faf298, free space=316k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    C [ntdll.dll+0x1010]
    C [ODBC32.dll+0x2c5d]
    C [ODBC32.dll+0x5fa0]
    C [ODBC32.dll+0x740e]
    C [JdbcOdbc.dll+0x124e]
    j sun.jdbc.odbc.JdbcOdbc.allocStmt(J[B)J+0
    j sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(J)J+47
    j sun.jdbc.odbc.JdbcOdbcConnection.createStatement(II)Ljava/sql/Statement;+27
    j sun.jdbc.odbc.JdbcOdbcConnection.createStatement()Ljava/sql/Statement;+7
    j Metier.Utilitaires.estEnMission(ILjava/util/Date;Ljava/sql/ConnectionZ+4

    chacune des méthodes utilise la connexion pour faire un accès une table particulière,mais la première qui utilise la connexion la ferme à sa fin
    merci pour votre interet

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut faut voir ce qu'il y a derrière Access_violation_exception
    on a compris une chose Access_violation_exception est du à une méthode qui
    essaye d'utiliser une connexion fermée.
    la vraie question c'est pourquoi cette connexion a été fermée par la méthode
    et d'ailleurs ces méthodes j'en testées quelques-unes à chaque fois elles ferment la connexion ??
    regardez encore cet exemple :

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Date;



    public class Main{

    public static void méthode1(Connection connect){
    System.out.println("interieur de méthode1:"+connect);
    try{
    Statement stmt=connect.createStatement();
    ResultSet rs=stmt.executeQuery("select * from ressource");
    }catch(Exception e){e.printStackTrace();}
    }

    public static void méthode2(Connection connect){

    try{
    System.out.println("interieur de méthode2:"+connect+" est-ce fermèe:"+connect.isClosed());
    Statement stmt=connect.createStatement();
    ResultSet rs=stmt.executeQuery("select * from ressource");
    }catch(Exception e){e.printStackTrace();}
    }


    public static void main(String args[]){

    Connection connect=new Connexion1().getConnexion();
    Connection connect2=new Connexion1().getConnexion();
    System.out.println(connect);
    System.out.println(connect2);
    méthode1(connect);
    méthode2(connect2);
    }
    }

    affiche
    sun.jdbc.odbc.JdbcOdbcConnection@83cc67
    sun.jdbc.odbc.JdbcOdbcConnection@e09713
    interieur de méthode1:sun.jdbc.odbc.JdbcOdbcConnection@83cc67
    interieur de méthode2:sun.jdbc.odbc.JdbcOdbcConnection@e09713 est-ce fermèe:false

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Problème réglé
    J'ai inspecté mon code chacune des méthodes dont on parlait fermait explicitement la connexion c'est bête comme erreur ... mais ça nous a donné
    la leçon suivante :

    "Une erreur ACCESS_VIOLATION_EXCEPTION peut venir de l'appel d'une connexion fermée"
    récit de mahmoud mourad

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

Discussions similaires

  1. Exception : access violation
    Par marie_p dans le forum Fortran
    Réponses: 6
    Dernier message: 11/03/2009, 16h30
  2. Exception access violation
    Par davish dans le forum Général Java
    Réponses: 11
    Dernier message: 04/06/2008, 13h19
  3. Réponses: 13
    Dernier message: 28/04/2008, 11h48
  4. Réponses: 18
    Dernier message: 09/10/2007, 10h20
  5. Réponses: 2
    Dernier message: 16/11/2006, 17h09

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