Executar comandos MySql via Java

Pessoal estou com um probleminha aqui na empresa, seguinte temos uma base de dados e a manipulamos atravéz do MySql-Front, ele tem opções de se realizar a OTIMIZAÇÃO, CHECAGEM, ANALIZE E REPARAÇÃO da base lá em TOOLS>>TABLE-DIAGNOSTICS. Pois bem no momento todas essas etapas são realizada "NA UNHA" dai estamos desenvolvemdo um forma de que isso seja feito atravez de uma pequeno aplicativo Java que será chamado via tarefas agendadas do windows e fará o porcesso todo. Queremos que os comandos sejam passados como se fossem no console direto para o MySql e a assim o processo seja realizado.

I hope that I can get your help!

tu qé chama esta função do MySQL na tua aplicação?

tipo que ela execute através da tua aplicação??

isso???

[quote=guilhermetn3]tu qé chama esta função do MySQL na tua aplicação?

tipo que ela execute através da tua aplicação??

isso???[/quote]

Algo assim, pois vou ter mais controle sobre a execução.

Mas estou a berto a dicas e sugestões!

esses tempos eu precisava acessar no SQL Server umas DTS através da minha aplicação… pesquisei na web e consegui achar a “linha” que executava através prompt … dae tentei executar através do método Runtime().exec()…e não tava bufando 100%

O que eu fiz , fiz um .bat com todas as linhas para chamar as DTS , e chamei o .bat através da minha aplicação , resolveu…

Pode ser ai a tua solução…

[]'s

[quote=guilhermetn3]esses tempos eu precisava acessar no SQL Server umas DTS através da minha aplicação… pesquisei na web e consegui achar a “linha” que executava através prompt … dae tentei executar através do método Runtime().exec()…e não tava bufando 100%

O que eu fiz , fiz um .bat com todas as linhas para chamar as DTS , e chamei o .bat através da minha aplicação , resolveu…

Pode ser ai a tua solução…

[]'s[/quote]

A primeira alternativa que analizamos foi fazer com um .bat mas estive falando com um professor e ele me aconselhou a não fazer, dai parti para a idéia de fazer em uma linguagem.

Já tentei com o Runtime().exec() mas não obtive muito sucesso.

    Via JDBC não funciona?? Vc já tentou??

o que este professor falo do .bat? pq ele não aconselha?

Olha até que passou pela minha cabeça mas não implementei nada.

Me disse que por ser uma rotina que vou colocar para rodar e ela vai parar meu servidor a 1:00 AM e fazer todo o processo e em seguida colocalo no ar novamente não seria uma boa alternativa, isso pois caso ocorra algo via .bat você não pode ter algum tratamento do processo.

mas me diz uma coisa esta ferramenta do MySQL que vc quer “chamar” na tua aplicação ,

é uma ferramenta nativa do MySQL né??

então pelo que eu sei vc não vai conseguir fazer outra coisa a não ser Runtime()…

Eu fiz um shell script que gerava umas estatisticas sobre o servidor executando o comando ‘show status’. Com isso vc tem bastante informacao pra algumas estatisticas como numero de conexoes, comandos enviados pro servidor, etc.
Voce poderia gazer o mesmo em java, conecta no banco e da um show status pra pegar as variaveis do servidor e ai eh so trabalhar em cima disso.

Usei esses artigos como referencia, vale a pena dar um lida.

http://articles.techrepublic.com.com/5100-22-5211728.html
http://articles.techrepublic.com.com/5100-22_11-5211760.html?tag=rbxccnbtr1

Se tiver uma forma de passar comando diretamente para o server via java isso já daria um jeito no problema proposto.

Porque vc nao quer usar JDBC e rodar o show status ?

[quote=windsofhell]
Porque vc nao quer usar JDBC e rodar o show status ?[/quote]

Manda algum material ai para eu pode ver na prática se da certo!

fiz um programinha rapidinho, tem que aprender a usar jdbc, se vai trabalhar com banco de dados hein?

//Daniel


import java.sql.*;

public class RunSQL {

	public static void main(String[] args) { 
		
		// muda aqui para o seu server.
		String host = "";
		String db = "";
		String username = "";
		String password = "";
		
		Connection con = null;
		Statement st = null;
		ResultSet rs = null;
				
		try { 
		
			Class.forName("com.mysql.jdbc.Driver");
        
			con = DriverManager.getConnection("jdbc:mysql://" + host + "/" + db + "?user=" + username +  
				                            	"&password=" + password);
			
			st = con.createStatement();
			rs = st.executeQuery("show status");
			
			while(rs.next()) { 
				
				System.out.println(rs.getString("variable_name") + " - " + 
				 		           rs.getString("value"));				
			}
			
		} catch (SQLException e) {
			System.out.println(e);
		} catch (ClassNotFoundException e) {
			System.out.println(e);
		}
        

	}	
	
}

É que não tive a oportunidade de trabalhar com JDBC, tudo que trabalhei até o momento foi com Hibernate.

Vou ver se implemento aqui e fazer as alterações necessárias para minha aplicação.

Agora um detalhe: tem como eu derrubar, checar as tabelas, otimiza las e em seguida restaurar o serviço do banco tudo vai JDBC?

Um forte abraço e obrigado pelo fonte.

Realmente não vai ter como eu fazer a parada do servidor e em seguida tentar obter um conexão com ele via JDBC para poder fazer os comandos que quero… :cry:

windsofhell deu certo cara valeu mesmo, consegui enviar os comandos para o MySql via JDBC ficou show!!!

Muito obrigado mesmo!!! :smiley: :smiley: :smiley: