viniGodoy, Desculpa foi a primeira vez que postei aki
nao sabia das regras mas vou cumprilas agora.
quanto ao erro nao aparece nenhum erro. so que entra em um loop infinito ou algo do tipo
a aplicação fica rodadando rodadando e nao acontece nada, se poderem me ajudar
Seu problema é com o “<” - toda vez que você precisar ter um comando que inclui um “<” ou um “>”, você precisa cercar o comando inteiro que contém o “<” entre aspas duplas. Um exemplo:
A mesma coisa que configurar o JDK, abre a pasta do mysql, vai até a pasta bin e copia o endereço… Depois adiciona nas variáveis de ambiente junto com o Java.
try {
String dirMysql = "C:\\wamp\\bin\\mysql\\mysql5.5.16\\bin";
String comandoMysql = "cmd /c mysql -uroot sys < c:\\temp\\bkp\\backup.sql";
Process process = Runtime.getRuntime().exec(comandoMysql, null, new File(dirMysql));
process.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
Agora com Java 7, você pode mudar o esquema e conseguir fazer de um jeito bem mais legal.
try {
byte[] bytes = new byte[4096];
String dirMysql = "C:\\wamp\\bin\\mysql\\mysql5.5.16\\bin\\";
ProcessBuilder pb = new ProcessBuilder(
dirMysql + "mysql", "-u", "root", "sys");
pb.redirectInput(ProcessBuilder.Redirect.from(new File("c:\\temp\\bkp\\backup.sql")));
Process process = pb.start();
//BufferedInputStream in = new BufferedInputStream(process.getInputStream());
BufferedInputStream in = new BufferedInputStream(process.getErrorStream());
StringBuffer retorno = new StringBuffer("");
while (in.read(bytes) != -1) {
retorno.append(new String(bytes));
}
process.waitFor();
if (!retorno.toString().equals("")) {
throw new Exception("Erro no comando: " + retorno);
}
} catch (Exception ex) {
ex.printStackTrace();
}
Seu problema pode ser path…
ou senão arquivo inválido…
ou ainda a falta do process.waitFor() o programa morre antes de terminar de rodar o comando todo…
ATUALIZADO: Para ler os erros que o mysql gera se o script estiver invalido por exemplo, precisa usar o ErrorStream ao invés do InputStream…
Se for um programa que usa a saída padrão, nesse caso sim use o InputStream…
Galera vlw por terem me ajudado a solução foi a seguinte
[code]
try {
//String dirMysql = “C:\wamp\bin\mysql\mysql5.0.45\bin”;
String dirMysql = “C:\Arquivos de programas\MySQL\MySQL Server 5.5\bin”;
String comandoMysql = “cmd /c mysql -uroot ctrl_caixa < c:\ctrl_caixa.sql”;
Process process = Runtime.getRuntime().exec(comandoMysql, null, new File(dirMysql));
process.waitFor();
JOptionPane.showMessageDialog(null, "Backup restaurado com sucesso");
} catch (IOException | InterruptedException ex) {
JOptionPane.showMessageDialog(null, "Não foi possivel restaura o banco de dados");
}[/code]