2010-11-22 10 views
2

Ich versuche, einen osql-Befehl aus dem Java-Programm zum Wiederherstellen der Datenbank wie folgt auszuführen.Runtime.getRuntime(). Exec - Osql-Abfrage ausführen

public void restore(){ 

Runtime.getRuntime().exec("cmd /c start osql -S PC-NAME -U username -P password -i createdb.sql 
} 

Wenn ich Methodenwiederherstellung aufrufen, wird die Eingabeaufforderung geöffnet, osql wird ausgeführt und dann wird die Eingabeaufforderung unsichtbar.

Könnten Sie bitte lassen Sie mich wissen, wenn es eine Möglichkeit gibt, die Eingabeaufforderung zu beenden geschlossen zu stoppen?

Danke für Ihre Hilfe

Antwort

1

Schreiben Sie Ihren Befehl osql ... in eine Fledermaus-Datei, pause als letzte Zeile dieser bat-Datei setzen und diese Schläger aus dem Code auszuführen.

+0

Vielen Dank für die schnelle Antwort. Es funktioniert mit der Batch-Datei. Ist es nicht möglich, die Eingabeaufforderung beizubehalten, wenn wir direkt aus Java-Code ausführen? – NewBie

+0

@NewBie 'cmd' wird beendet, wenn der Befehl als'/c' übergeben wurde. Sie können zwei Befehle in einer Zeile mit '&' kombinieren und den kombinierten Befehl als Argument an '/ c' übergeben. Aber ich bin mir nicht sicher über die Syntax. Versuchen Sie 'cmd/c start osql -S PC-NAME -U Benutzername -P Passwort -i createdb.sql & pause" (nicht sicher). – khachik

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

und dies schließt die generierte Befehlszeile nicht.

Von diesem Link http://ss64.com/nt/cmd.html

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

Können Sie versuchen/K statt/C und lassen Sie wissen, was sind die Ergebnisse?

Auch sollten Sie dies zuerst aus einer Batch-Datei versuchen, bevor Sie es aus Java versuchen.

Verwandte Themen