2010-11-22 16 views
2

J'essaie d'exécuter une commande osql à partir du programme Java pour restaurer la base de données comme suit. Lorsque j'appelle méthode restore, l'invite de commande s'ouvre, osql est exécuté et l'invite de commande devient invisible.Runtime.getRuntime(). Exec - Exécution de la requête osql

Pourriez-vous s'il vous plaît laissez-moi savoir s'il y a un moyen d'arrêter l'invite de commande à partir de gettings fermé?

Merci pour votre aide

Répondre

1

Écrivez votre commande osql ... dans un fichier de chauve-souris, mettez pause la dernière ligne de ce fichier de chauve-souris et exécuter cette chauve-souris à partir de votre code.

+0

Merci beaucoup pour la réponse rapide. Cela fonctionne avec le fichier batch. Est-il impossible de conserver l'invite de commande lorsque nous exécutons directement à partir du code Java? – NewBie

+0

@NewBie 'cmd' se ferme lorsque la commande est passée en tant que'/c'. Vous pouvez combiner deux commandes en une ligne en utilisant '&' et passer la commande combinée en argument '/ c'. Mais je ne suis pas sûr de la syntaxe. Essayez d'appeler 'cmd/c démarrer osql -S PC-NAME -U nom d'utilisateur -P mot de passe -i createdb.sql & pause" (pas sûr). – khachik

0
public static void main(String[] args) throws Exception { 
    Runtime.getRuntime().exec("cmd /c start dir"); 
} 

et ceci ne ferme pas la ligne de commande générée.

De ce lien http://ss64.com/nt/cmd.html

Options 
    /C  Carries out My_Command and then terminates 
    /K  Carries out My_Command but remains 

Pouvez-vous essayer/K au lieu de/C et faire savoir quels sont les résultats?

Vous devriez d'abord essayer ceci à partir d'un fichier batch avant de l'essayer à partir de Java.