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 :

[Update] Blocage sur Statement.executeUpdate


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut [Update] Blocage sur Statement.executeUpdate
    Bonjour,

    J'ai un soucis d'éxecution d'une requète d'update en Java sur une base Oracle, en effet la requète suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE REPT rep 
    SET rep.PURGEABLE = 'O' 
    WHERE rep.REP IN (SELECT f.REP 
                  FROM FGT f
                  WHERE f.FGT_VALD_DT < to_date('01/01/2006', 'dd/MM/YYYY') )
    s'éxecute parfaitement sous toad avec un temps d'éxecution rapide, mais lorsque je l'a fait éxecuter en Java, mon appli se bloque sur le executeUpdate. Il ne sort ni dans une exception, et ne se termine jamais, je n'ai donc aucun code d'erreur qui pourrais m'être utile.

    Voyez vous l'origine du problème ?

  2. #2
    in
    in est déconnecté
    Membre Expert 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
    Par défaut
    tu peux nous montrer le bout de code correspondant ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Voici le morceaux de code qui effectue le executeUpdate
    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
     
    protected void executeUpdate(String querry)throws FmkStoreException ,FmkSystemException{
     
    	Statement stmt =null;
    	FmkConnectionInterface conn = null;
     
    	try {
    		// on recupere la connexion qui existe peut etre deja	
    		conn = ConnectionManager.getFmkConnection(getDataBaseName()); 
     		stmt = conn.createStatement(); 
     
    		// on lance la requete
    		int res = stmt.executeUpdate(querry.toString()); 
     
    		if (conn.getCommitMode() == conn.MODE_CONNECTION_AUTO)
    			conn.commit();
     
    		if (res == 0)
    			throw new FmkStoreException("EJB-4101",querry+" : Execute Update returned 0");
     
    	} catch (SQLException exception) {
    		String errorMessage = "";
    		while (exception != null) {
    			errorMessage += "\nERROR:\n";
    			errorMessage += "Message: "+ exception.getMessage ();
    			errorMessage += "SQLState: "+ exception.getSQLState ();
    			errorMessage += "ErrorCode: "+ exception.getErrorCode ();
    			exception = exception.getNextException();
    		}			
    		throw new FmkStoreException("EJB-4202",querry+" : "+errorMessage);
    	}finally{
    		// fermeture du statement
    		try{
    			stmt.close();
    		}catch(Exception sqle){}
     
    		if (conn.getCommitMode() == conn.MODE_CONNECTION_AUTO){	
    			try{
    				conn.close();
    			}catch(Exception sqle){}
    		}
    	}
    }

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Plusieurs questions :
    - es-tu sûr d'avoir le driver jdbc d'oracle qui va bien ?
    - ton ConnectionManager renvoit-il une connection avec un niveau d'isolation (avec transaction) ?
    - dans ton process, existe-t-il une possibilité pour qu'un enregistrement soit verrouillé ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Alors cette requète est un bout d'une évolution d'une grosse application donc niveau driver etc tout est bien présent et non mes enregistrements ne sont pas vérouillés, enfin je ne pense pas je n'ai rien mis en place dans ce sens.
    Sinon comment le vérifier ?

    J'ai identifié que c'est la partie IN(SELECT ...) qui pose un soucis, il n'a pas l'air d'aimer cette forme de requète.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    peux-tu essayer de mettre une date directement à la place de to_date(...) ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. blocage sur une méthode synchronized
    Par rockelite dans le forum Général Java
    Réponses: 3
    Dernier message: 03/05/2006, 22h28
  2. Blocage sur récursivité de base
    Par gilles641 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 07/04/2006, 13h42
  3. blocage sur Left
    Par TSS dans le forum Access
    Réponses: 5
    Dernier message: 10/03/2006, 12h33
  4. [10g1][OCI][C++][IIS] Blocage sur un update
    Par Herode dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 21/02/2006, 09h32
  5. Réponses: 2
    Dernier message: 29/09/2004, 09h07

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