osql -S не дает мне ожидаемых результатов - PullRequest
1 голос
/ 02 марта 2010

Я пытаюсь написать программу на Java, которая использует osql для генерации списка баз данных на сервере. Мой код выглядит следующим образом:

    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 -?, чего я явно не делал.

Я не уверен, что делаю не так, поэтому любая помощь будет признательна. Большое спасибо!

1 Ответ

1 голос
/ 02 марта 2010

убрать пробелы из аргументов, снять && off: str = new String [] {"cmd.exe", "/ c", "osql", "-S", сервер, "-U", пользователь, "-P", passwd, "-Q", "sp_databases «};

...