Hallo zusammen,
beim Ausführen einer Anwendung würde ich gerne ein (1 im Moment zum testen ) SQL
Script ausführen. Habe eine Liste in welcher der Pfad zu dem Script ( absolut ) steht.Später sollen da natürlich mehrere *.sql Dateien enthalten sein.
Bevor ich weiter erkläre der nötige Source
try {
String[] cmd = new String[]{"cmd", "/c", "start", "mysql.exe", "--user=" + user,
"--password=" + pass, " < " + sqlList.get(0)};
Runtime.getRuntime().exec(cmd);
} catch (Exception e) {
e.printStackTrace();
}
}```
sqlList ist eine ArrayList<String> in der die absoluten Pfade stehen ( dem Debugger nach auch richtig. ) und get(0) weil zum testen :).
pass und user sind globale final Strings.
Am liebsten wäre mir, da ich eh den MySQL Connector benutze, eine Methode ala executeScript(...) welche ich aber leider nicht finden kann. Deswegen mein Umweg über die "cmd" (Läuft eh nur unter WIN, deswegen kein Akt ).
Wenn ich das Script über eine *.bat die den gleichen Inhalt hat starte klappt alles.
Ebenso die im Script enthaltenen Befehle im QueryBrowser.
Da das evtl. auch unter Vista laufen soll der Umweg über das cmd Array.Bug #keineAhnung_mehr. Auf jeden Fall im Rest des Programmes klappts auch unter Vista über die Array Methode.
Zu meiner oder meinen Fragen :
- Wo liegt der Fehler? Im Array oder im Aufruf von Runtime (bei allen meinen Tests
wird zumindest nie ein Stacktrace ausgegeben. ( Das Script wird aber auch nicht
richtig ausgeführt, also keine Änderung in der Datenbank )
- Wie heißt die Methode mit der ich ein Script ausführen kann?
- Bin gerne für Vorschläge offen wie man das Ganze auf mehrere Scripte
ausweiten kann( am bsten ohne cmd ) aber Haupsache ein Script läuft erstmal
durch ( Rest bekomm ich dann alleine hin )
Die Lib des MySQlConnectors heisst mysql-connector-java-5.1.5-bin.jar falls
das noch hilft.
Mfg
mmz