powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / запуск sqlplus из JAVA applicqtion
4 сообщений из 4, страница 1 из 1
запуск sqlplus из JAVA applicqtion
    #34559350
Sergey P.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, может быть кто сталкивался.

Задача: из Java приложения необходимо запустить sqlplus (тот что от Oracle), и соответственно тот запустит некий скрипт.

В общем то, все неплохо получается кроме одного момента, например, в качестве скрипта, который должен запустить sqlplus указано неверное имя.
Соответственно сам sqlplus в поток кидает сообщение, что файл не найден, и уходит в ожидание.

Как бы отловить этот момент. Может, есть у кого идеи, самое плохое – что, похоже, такие ошибки, как запуск отсутствующего скрипта – sqlplus не считает ошибкой и в getErrorStream() ничего не попадает. (хотя может я ошибаюсь)

Вот совсем упрощенный пример запуска sqlplus @<скрипт>

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Process p =  null ;
 try  {
  p = Runtime.getRuntime().exec(Resource.aRunSqlplus + s);
// s - имя скрипта, оно может оказаться неверным
}  catch  (IOException ex) {
  ex.printStackTrace();
}
BufferedReader in =  new  BufferedReader( new  InputStreamReader(p.getInputStream()));
String line;
 try  {
  // если здесь sqlplus наячинает ждать какого либоо ввода - зависаем
   while  (((line = in.readLine()) !=  null ))  {
    System.out.println(line);
  }
}  catch  (IOException ex) {
  ex.printStackTrace();
}

p.s. В действительности, тут даже проблема не в том, что файл – может оказаться неверным, а в том что sqlplus начнет что либо ожидать или просить ввести. Может, есть идеи, как отловить этот момент?
...
Рейтинг: 0 / 0
запуск sqlplus из JAVA applicqtion
    #34559394
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey P.
sqlplus /?
=>
sqlplus -S
...
Рейтинг: 0 / 0
запуск sqlplus из JAVA applicqtion
    #34560081
Sergey P.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так к сожалению не работает.
Вот что получается

Код: plaintext
1.
C:\>sqlplus -S  "/as sysdba" @d:\blablabla.sql
SP2- 0310 : unable to open file "d:\blablabla.sql"

А по идеи должно быть так
Код: plaintext
1.
2.
3.
4.
C:\>sqlplus -S  "/as sysdba" @d:\blablabla.sql
SP2- 0310 : unable to open file "d:\blablabla.sql"
exit;

C:\>
Тое есть, в silent mode по ошибке процесс не завершается.
Сейчас пытаюсь через OutputStream пропихнуть пресловутый exit sqlplus-у, но пока безрезультатно.
Других идей тоже пока нет…
...
Рейтинг: 0 / 0
запуск sqlplus из JAVA applicqtion
    #34560344
Sergey P.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все разобрался, идея в том, что все-таки необходимо пропихнуть в sqlplus exit; тогда по идеи в случае возникновения ошибок выполнение потока прервется самостоятельно.
Код получается примерно вот такой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Process p =  null ;
 try  {
  p = Runtime.getRuntime().exec(Resource.aRunSqlplus + s);
  // s - имя скрипта, оно может оказаться неверным  
}  catch  (IOException ex) {
  ex.printStackTrace();
}
BufferedReader in =  new  BufferedReader( new  InputStreamReader(p.getInputStream()));
riter out =  new  OutputStreamWriter(p.getOutputStream());
String line;

// ставим в очередь сообщение на выход
 try  {
  out.write("exit; \n");
  out.flush();
}  catch  (IOException ex) {
  ex.printStackTrace();
}
// проверяем что твориться в входном потоке
 try  {
   while  (((line = in.readLine()) !=  null ))  {
    System.out.println(line);
  }
}  catch  (IOException ex) {
  ex.printStackTrace();
}
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / запуск sqlplus из JAVA applicqtion
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]