我想用Java編寫一個程序,它使用osql
來生成服務器上的數據庫列表。我的代碼如下:osql -S沒有給我預期的結果
public Object[] findDataBases(String server, String user, String passwd){
str = new String[] {"cmd.exe", "/c", "osql", " -S ",
server, " -U", user, "&&", "-P ", passwd,
"&&", "sp_databases","&&", "GO"
};
Runtime rt = Runtime.getRuntime();
try{
Process p = rt.exec(str);
InputStream is = p.getInputStream();
InputStream err = p.getErrorStream();
InputStreamReader in = new InputStreamReader(is);
InputStreamReader er = new InputStreamReader(err);
BufferedReader buff = new BufferedReader(in);
String line = buff.readLine();
ArrayList<String> listDatabases = new ArrayList<String>();
while (line != null){
listDatabases.add(line.trim());
/*for (int i = 0; i<4; i++){
buff.readLine();
}*/
line =buff.readLine();
}
System.out.println("error stream:");
buff = new BufferedReader(er);
while ((line=buff.readLine()) != null){
System.err.println(line);
}
databases = listDatabases.toArray();
return databases;
}
當我運行此,出於某種原因,我得到我彷彿運行osql -?
的消息,我顯然還沒有完成。
我不知道我在做什麼錯,所以任何幫助,將不勝感激。非常感謝!
你可以包括你正在發佈的完整的osql命令(str)嗎?也許它不是按照你的意圖建造的。 – 2010-03-02 15:54:00
我認爲它在那裏 - 「str = new String [] {」cmd.exe「,」/ c「,」osql「,」-S「, 服務器,」-U「,用戶,」&&「,」 -P「,passwd, 」&&「,」sp_databases「,」&&「,」GO「 };' 當我從cmd提示符執行時,它是: 'osql -S serverName -U userName -P password ' – chama 2010-03-02 16:02:03
但是如何將所有這些連接在一起成爲最終命令? '&&是什麼? – 2010-03-02 16:27:17