Disparar uma consulta no banco em determinado período de tempo  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Pedro Ribeiro
JavaChild

Membro desde: 24/06/2011 14:46:02
Mensagens: 114
Offline

Olá pessoal, estou com uma aplicação que faz o seguinte, é um Jframe que quando o usuário clica em um botão dispara uma consulta no banco. Eu gostaria que, quando a aplicação fosse iniciada, a aplicação fizesse a consulta e ficasse repetindo automaticamente em determinados períodos de tempo. É possível? Como?
FernandoFranzini
GUJ Master
[Avatar]

Membro desde: 24/04/2009 12:58:16
Mensagens: 1541
Offline

Pedro Ribeiro wrote:Olá pessoal, estou com uma aplicação que faz o seguinte, é um Jframe que quando o usuário clica em um botão dispara uma consulta no banco. Eu gostaria que, quando a aplicação fosse iniciada, a aplicação fizesse a consulta e ficasse repetindo automaticamente em determinados períodos de tempo. É possível? Como?

Sim.... use a classes Timer e TimerTaks para fazer um agendamento de processos de tempos e tempos..dai vc implementa oque deseja fazer...
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/timer.html
http://enos.itcollege.ee/~jpoial/docs/tutorial/essential/threads/timer.html

This message was edited 1 time. Last update was at 14/07/2011 09:53:50


Fernando Franzini
[Email] [WWW]
felipevs
JavaEvangelist

Membro desde: 05/01/2011 00:23:31
Mensagens: 456
Offline

Se você não quiser por horário e sim por segundos.
Por exemplo: de Dez em dez segundo faça uma chamada no banco.

This message was edited 1 time. Last update was at 14/07/2011 12:06:03

rmendes08
GUJ Master
[Avatar]

Membro desde: 29/05/2008 14:09:28
Mensagens: 1617
Offline

felipevs wrote:Se você não quiser por horário e sim por segundos.
Por exemplo: de Dez em dez segundo faça uma chamada no banco.



Não entendi o porque dessa complicação , não seria mais fácil usar :



logo de uma vez ?

De qualquer maneira, eu acho o uso do Timer mais limpo, ainda mais em uma aplicação Swing.

Em segundo lugar , eu pensaria com carinho se ficar consultando o banco de dados toda a hora faz realmente sentido, isso é praticamente o inverso do caching de entidades (ou tabelas). Ou seja, vai na contra-mão de tudo o que é feito para ganho de desempenho em uma aplicação.

This message was edited 1 time. Last update was at 14/07/2011 13:03:25


"A Técnica é transformada em Arte por quem a emprega"

"O futuro pertence àqueles que acreditam na beleza de seus sonhos"

Computadores Fazem Arte

http://www.uaijug.com.br

"É importante estabelecer uma estrutura de alto nível, mas isso não significa criar uma infinidade de diagramas de classes detalhados."
FernandoFranzini
GUJ Master
[Avatar]

Membro desde: 24/04/2009 12:58:16
Mensagens: 1541
Offline

Fazer while infinito é na verdade gambiarra...use Timer e TimerTask que foi feio justamente para isso.....

Fernando Franzini
[Email] [WWW]
Lucas Emanuel
GUJ Master

Membro desde: 09/08/2009 23:48:57
Mensagens: 1143
Localização: Heap
Offline

Cria um Stateless Bean com um Timer Service.

This message was edited 2 times. Last update was at 14/07/2011 14:51:05

FernandoFranzini
GUJ Master
[Avatar]

Membro desde: 24/04/2009 12:58:16
Mensagens: 1541
Offline

Lucas Emanuel wrote:Cria um Stateless Bean e com um Timer Service.

Não da para fazer isso dentro de uma aplicação Swing....

Fernando Franzini
[Email] [WWW]
Lucas Emanuel
GUJ Master

Membro desde: 09/08/2009 23:48:57
Mensagens: 1143
Localização: Heap
Offline

FernandoFranzini wrote:
Lucas Emanuel wrote:Cria um Stateless Bean e com um Timer Service.

Não da para fazer isso dentro de uma aplicação Swing....


Mals , não tinha visto que era Swing.

This message was edited 2 times. Last update was at 14/07/2011 15:01:57

Pedro Ribeiro
JavaChild

Membro desde: 24/06/2011 14:46:02
Mensagens: 114
Offline

rmendes08 wrote:





Tentei de diversas maneiras inserir seu código ao meu mas me parece que entra em um loop infinito, a janela trava.

This message was edited 1 time. Last update was at 14/07/2011 15:07:13

FernandoFranzini
GUJ Master
[Avatar]

Membro desde: 24/04/2009 12:58:16
Mensagens: 1541
Offline

while(true){
try{
Thread.sleep(10 * 1000);
}catch(Exception ee){
System.out.println("Erro na execução do tempo.");
}

executeQuery();
}

Se vc for fazer essa bobagem, tem que fazer numa thread separada !!!!! na mesma thread vai travar mesmooooo!!!!

Fernando Franzini
[Email] [WWW]
MarcioCasteloBranco
JavaGuru
[Avatar]

Membro desde: 14/08/2009 16:00:15
Mensagens: 220
Offline

Vc tera que sincronizar as threads que gerenciam o swing com a sua !
[MSN]
MarcioCasteloBranco
JavaGuru
[Avatar]

Membro desde: 14/08/2009 16:00:15
Mensagens: 220
Offline

Vc pode adotar uma outra extrategia, toda vez que for feito uma alteração ou exclusão no seu BD(em sua tabela) vc pode utilizar um observe(padrao de projeto) para atualizar a sua frame.

This message was edited 1 time. Last update was at 14/07/2011 16:00:08

[MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team