我無法在我的Java程序中檢索"db2 list db directory"
命令的輸出。基本上,我試圖做到這一點: -如何從Java程序中檢索db2命令輸出
- 組合框在本地系統
- 用戶填入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) {}
});
問題是該命令執行,我無法檢索輸出。窗戶剛剛打開和關閉。
我試過的一個解決方案是將輸出重定向到一個臨時文件並讀取它。它可以工作,但是效率很低,因爲每次用戶選擇一個實例時都會運行這段代碼。
我在Windows XP SP3計算機上運行DB2 9.7企業版。
有關如何檢索Java程序中的輸出的任何想法?
非常感謝。
好了,想通了這一個了。所需的解決方案是將/ w和/ i開關添加到命令中: - 'String command =「db2cmd/c/w/i \」set DB2INSTANCE =「+ instance +」&db2 list db directory \「」;' 更多信息在這裏:http://www.ibm.com/developerworks/data/library/techarticle/0307fierros/0307fierros.html#cw – vaisakh 2012-03-06 09:47:34