我无法在我的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