Olá pessoal…
Bom, basicamente tenho três duvidas, vou descrever uma após a outra pra facilitar…
- Por que quando eu rodo o pg_dump.exe através de um JButton do meu programa, a tela em questao fica travada e o arquivo de backup é gerado só depois q eu finalizo o programa ?
Pra rodar o pg_dump.exe eu uso o seguinte trecho de código, que se acha em qq fórum por ai (arq == caminho e nome do arquivo escolhido num save dialog):
try {
Runtime.getRuntime().exec("D:\\PROGRAMAS\\PostgreSQL\\8.3\\bin\\pg_dump.exe -i -h localhost -p 5432 -U postgres -F c -b -v -f \"" + arq + "\" jsacteste");
} catch (Exception ex) {
ex.printStackTrace();
}
2) Eu consegui que o programa não fique travado, executando o cmd e passando o comando pra ele ao invés de chamar diretamente o pg_dump, só que eu tentei usar o comando waitFor(); para esperar o cmd ser finalizado e entao obter o exitValue(); verificar se é igual a 0 ou não pra dizer se o backup foi feito com sucesso ou não, (apesar de eu achar q nao vai funcionar, pq o programa executado foi o cmd e nao o pg_dump) mas o comando waitFor(); não funcionou, passou direto por ele, ou seja, o println ali é imprimido antes do pg_dump terminar. Por que será? chamando outros programas, como no notepad por exemplo, ele fica esperando …
try {
Process p = Runtime.getRuntime().exec("cmd.exe /c start D:\\PROGRAMAS\\PostgreSQL\\8.3\\bin\\pg_dump.exe -i -h localhost -p 5432 -U postgres -F c -b -v -f \"" + arq + "\" jsacteste");
p.waitFor();
System.out.println("terminou");
} catch (IOException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
3) A ultima dúvida é a respeito das mensagens geradas pelo pg_dump, por exemplo, se eu executar o cmd e dai rodar o comando pro pg_dump fazer o backup, varias mensagens serão exibidas no console, (reading table … reading nao sei o q…), se eu fizer o backup a partir do pgAdmin, essas mensagens tbem aparecem na telinha lah do pgAdmin, será q tem como eu obter essas mensagens e joga-las num JTextArea por exemplo ??? eu quero verificar o código de saída tbem pra informar o usuário se o backup foi feito com sucesso, mais como dito acima, ou fica travado ou passa direto… Alguem já fez alguma coisa assim ?
Desde já grato t+
