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

Langage Java Discussion :

Problème lors de l'exécution de commandes dos (ordre non respecté)


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 45
    Points
    45
    Par défaut Problème lors de l'exécution de commandes dos (ordre non respecté)
    Bonjour à tous,

    Je rencontre actuellement un problème avec des lignes de commandes dos... En gros, j'ai fait 3 scripts SQL :
    1 qui modifie la structure de la table T1 (exemple : ajout de prenom à la table [nom])
    1 qui crée une deuxième table T2 d'audit pour savoir qui a touché à la première (exemple : [nom, prenom, action, date, utilisateur])
    1 qui crée des triggers pour que T2 se remplisse automatiquement à partir de T1

    Je les exécute en ligne de commande, avec isql. Quand je les exécute directement d'après une ligne de commande dos (Exécuter > cmd), les scripts marchent nickel. Par contre quand je les fais exécuter par Java, on dirait qu'il les appelle dans le désordre...

    En gros quand il essaye de faire le trigger, il met "invalid column prenom"... Comme s'il essayait de l'exécuter avant les autres...

    Voici le code de ma fonction qui exécute :
    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
    private static void execCmd(String[] args, String dirname, String sep) {
    		try {
    			final Process ps = Runtime.getRuntime().exec(args);
     
    			new Thread() {
    				public void run() {
    					try {
    						BufferedReader reader = new BufferedReader(new InputStreamReader(ps.getInputStream()));
    						try {
    							while((ligne = reader.readLine()) != null) {
     
    							}
    						} finally {
    							reader.close();
    						}
    					} catch(IOException ioe) {
    						ioe.printStackTrace();
    					}
    				}
    			}.start();
     
    //			 Consommation de la sortie d'erreur de l'application externe dans un Thread separe
    			new Thread() {
    				public void run() {
    					try {
    						BufferedReader reader = new BufferedReader(new InputStreamReader(ps.getErrorStream()));
    						try {
    							while((reader.readLine()) != null) {
    								// Traitement du flux d'erreur de l'application si besoin est
    							}
    						} finally {
    							reader.close();
    						}
    					} catch(IOException ioe) {
    						ioe.printStackTrace();
    					}
    				}
    			}.start();
    		} catch (FileNotFoundException e) {
    			logger.error("Unable to find the script file : "+e);
    		} catch (IOException e) {
    			logger.error("Unable to read the script file : "+e);
    		} 
    	}
    Je me demandais s'il fallait que je rajoute quelque chose genre wait() pour être sur que la première commande a fini de s'exécuter avant de passer à la suivante, etc ?

    Avez-vous une idée svp ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Points : 170
    Points
    170
    Par défaut
    pour attendre la fin d'un process tu peux faire


  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 45
    Points
    45
    Par défaut
    Ca marche !! Merci bcp

    J'avais bêtement mis wait() plutôt que waitFor() !

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    perso je me demande pourquoi utiliser des threads alors que c'est un pur traitement séquentiel qui est souhaité ? Enfin bon ca marche
    Vive les roues en pierre

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut erreur dans le programme
    Bonjour ,je suis entrain de faire un programme qui prenne en paramètre 2 entiers et un caractère qui correspond a un opérateur .Je n'arrive pas a trouver l'erreur s.v.p:

    public class test {


    public static int calculer(int x, char a, int y) {
    if ( a =='+') {
    return x+y ; }

    else if ( a=='*') {
    return x*y ; }

    else if ( a=='-') {
    return x-y ; }

    else if ( a=='/') {
    return x/y ; }

    }

    }



    P.S : je ne veux pas utiliser la commande switch . Merci beaucoup

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

Discussions similaires

  1. exécuter la commande dos cscript.exe via un javascript
    Par chichiboof dans le forum VBScript
    Réponses: 17
    Dernier message: 06/04/2011, 11h55
  2. Problème d'exécution de commande dos
    Par Milowen dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2006, 14h13
  3. [Procédure] problème lors de l'exécution
    Par pinocchio dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 31/10/2006, 14h23
  4. Problème lors de l'exécution d'un trigger
    Par Madoka dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 30/06/2006, 08h33
  5. Problème lors de l'exécution de mes programmes
    Par darkmalak01 dans le forum Langage
    Réponses: 7
    Dernier message: 27/09/2005, 18h35

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