2013-02-12 2 views
0

первое сообщение - и полный новичок на языке, но вы должны что-то начать. на данный момент моя проблема заключается в следующемПопытка вставить SQL-запрос в окно командной строки с Java

1: открыть окно командной строки & перейти в определенный каталог

2: запустить третью партию EXE-файл (LogParser.exe) оттуда с запросом SQL в качестве аргумента

Я знаю о Runtime.getRuntime(). Exec ("cmd.exe"); но это просто вызывает окно команд.

, но как мне выполнить второй шаг, т.е. добавить запрос? Возможно ли обработать SQL-запрос в виде строки и передать ее в окно команд?

например. вывод от окна командной строки будет выглядеть как этот

Logparser.exe «выберите верхний 5 * из приложения»

Может быть, это очень простое, но и если это Извинение, но основной, где я нахожусь сейчас слишком

+2

Вы, конечно, не хотите, чтобы подключиться к БД с помощью JDBC? – bsiamionau

+0

Нет - (пока еще нет). Причина, по которой я делаю это, - это просто посмотреть, могу ли я получить информацию из LogParser во время работы в фоновом режиме. Log Parser выводит информацию на экран cmd при запуске. Если я могу заставить этот запрос работать, тогда я могу манипулировать другими, чтобы писать в файл и т. Д. И допрашивать. – user2065481

ответ

0

может быть что-то вроде:

ProcessBuilder pb = new ProcessBuilder("c:\path\to\LogParser.exe", "select top 5 * from application"); 
Process p = pb.start(); 
InputStreamReader is = new InputStreamReader(p.getInputStream()); 
p.waitFor(); 
char c; 
while ((c = is.read()) != -1) { 
    System.out.print(c); 
} 
is.close(); 

Если вы абсолютно необходимо использовать в командной строке, то вы можете использовать p.getOutputStream() для отправки строки в буфер ввода другого процесса (STDIN).

(Испытано вышеприведенный код на Unix с «LS», «-l», написанный на Groovy так YMMV.)

+0

Привет - спасибо. Это работает. Проблема заключается в том, что с Log Parser - когда вы запускаете его автоматически, как ваш пример, он открывает полное приложение Windows и не запускает последующий запрос. только обходной путь, который я могу придумать, - сначала попытаться открыть консоль Windows в правильном местоположении, а затем запустить другой метод, чтобы вставить следующую строку: «LogParser.exe» выбрать верхнюю часть 5 * из приложения « – user2065481

+0

Открыть' cmd.exe' as вы видите выше, но передаете команды как строки в Process.getOutputStream(), как если бы они были тем, кем был введен конечный пользователь. – cfeduke

+0

Привет - Я нашел способ. Я создал командный файл в Windows, поместив запрос в пакетный файл и запускал exe с него через Java Runtime rt = Runtime.getRuntime(); rt.exec ("cmd/c start C: \\ Temp \\ test.bat"); – user2065481