Я не могу получить вывод команды "db2 list db directory"
в моей Java-программе. По сути, я пытаюсь сделать следующее: -
- Поле со списком заполняется экземплярами db2 в локальной системе
- Пользователь выбирает конкретный экземпляр из поля со списком
- Запущен новый процесс для просмотра базы данных для этого экземпляра
- Показать базу данных как еще одно поле со списком
Это фрагмент кода, который я сделал: -
// dbinstances is a Combo box (Eclipse SWT widget)
this.dbInstances.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent arg0) {
// get selected instance name
String instance = dbInstances.getText();
// command invokes db2 command window, sets current instance and issues list db command
String command = "db2cmd /c \"set DB2INSTANCE="+instance+" & db2 list db directory\"";
// execute command and read output
try{
Process p = Runtime.getRuntime().exec(command);
BufferedReader br= new BufferedReader(new InputStreamReader(p.getInputStream()));
String op = null;
while((op=br.readLine())!=null){
System.out.println(op);
}
}
catch(IOException ioe){
ioe.printStackTrace();
}
}
public void widgetDefaultSelected(SelectionEvent arg0) {}
});
Проблема в том, что команда выполняется, я не могу получить вывод. Окно просто открывается и закрывается.
Одним из решений, которое я попытался, было перенаправить вывод во временный файл и прочитать его. Это работает, но довольно неэффективно, поскольку этот фрагмент кода запускается каждый раз, когда пользователь выбирает экземпляр.
Я использую DB2 9.7 Enterprise edition на компьютере с Windows XP SP3.
Есть мысли о том, как получить выходные данные в программе Java?
Заранее большое спасибо.