Consulta constante no banco de dados(RESOLVIDO)

13 respostas
P

Tenho uma aplicação desktop crud, preciso que as consultas ao banco sejam constantes porque as informações do banco mudam muito e preciso pegar essas informações mostrar em uma janela swing e enviar via socket para outra aplicação. Alguma ideia de como fazer uma consulta constante, tipo um túnel de acesso ao banco?

13 Respostas

starkiller

Cara o que vc precisa é schedule, que roda de tempo em tempo, atualizando assim sua base com as novas informações. Dá uma olhada no Quartz, é uma ferramenta muito boa de schedule em java.

P

Pode me passar um exemplo, pesquisei e os exemplos que achei foram em java web, a minha aplicação é desktop.

jose_castilho

Boa tarde,

Segue o link com um quick start do QUARTZ que deve ajudá-lo:

http://www.quartz-scheduler.org/overview/quick-start

Analisando vosso problema, gostaria de levantar algumas questões imporantes:

Qual o volume de dados que deverá ser transferido entre as aplicações?
Quantos clients receberão estas informações?

Deve-se tomar muito cuidado com este tipo de integração de software para não gerar consultas excessivas ao banco de dados e/ou transferir alto volume de dados de forma a sobrecarregar a rede. Qual o cenário em que você precisa fazer esta comunicação? poderia descrever inclusive com os dados que serão transmitidos?

Quaisquer dúvidas estou à disposição.

[]s

P

São 2 linhas de texto, máximo de 30 caracteres.

Uns 70 hosts irão rodar a aplicação java, a mesma busca no banco 4 informações e envia 2 para a aplicação delphi. Ira funcionar em uma rede interna.

FernandoFranzini
P

Peguei o exemplo do amigo acima, adaptei e ficou assim:

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

public class Tempo {
   private Timer timer;
   private String agente=null;
   private String ip=null;
   private ArrayList<String> retorna;
	
   public void Reminder() {	
       timer = new Timer();
       timer.scheduleAtFixedRate(new RemindTask(), 0, 10*1000);
   }

   class RemindTask extends TimerTask {
       public void run() {
          LoginC2 read_ag_ip = new LoginC2();
          agente = read_ag_ip.ler_agente();
          ip = read_ag_ip.ler_ip();
          BdC2 consulta = new BdC2();
          retorna = consulta.dados_cliente(agente, ip);
       }
   }
}

Preciso retornar o valor de retorna e inserir na janela swing, tentei usar retorno do método Reminder mas deu erro:

Alguma ideia de como retorno esse retorna para imprimir nos labels da janela swing.

FernandoFranzini

A task(thread) tem setar o valor em algum objeto da GUI.

P

Qual objeto da janela? Eu recebo a consulta da classe e seto em um jTextField como abaixo.

ArrayList<String>dados_consulta = consulta.dados_cliente(agente, ip);
jTextField4.setText(dados_consulta.get(0));
jTextField6.setText(dados_consulta.get(1));
jTextField5.setText(dados_consulta.get(2));
FernandoFranzini

Eu que não sei…veja seu codigo ai! kkkk

P

Então, na janela jframe tem alguns jTextField, eu seto informações nos jTextField dentro da classe responsável pelo jframe, o que não estou conseguindo fazer é acessar esses jTextField de dentro da classe responsável pelo contador de tempo.

FernandoFranzini

Então, na janela jframe tem alguns jTextField, eu seto informações nos jTextField dentro da classe responsável pelo jframe, o que não estou conseguindo fazer é acessar esses jTextField de dentro da classe responsável pelo contador de tempo.

Faça o objeto task ter uma referencia para esse objeto ai.

P

Então, na janela jframe tem alguns jTextField, eu seto informações nos jTextField dentro da classe responsável pelo jframe, o que não estou conseguindo fazer é acessar esses jTextField de dentro da classe responsável pelo contador de tempo.

Faça o objeto task ter uma referencia para esse objeto ai.

Criei um metodo dentro da classe jframe pra manipular os jTextField.

Quando passo as informações para o método os valores do jTextField não mudam, ficam em branco.

Mesmo criando um método dentro da classe responsável pelo controle da janela ainda não consigo acesso aos jTextField que preciso.

public void manipula_text(ArrayList<String> dados){
   jTextField4.setText(dados.get(0));
   jTextField6.setText(dados.get(1));
   jTextField5.setText(dados.get(2));
}
P

Peguei a classe tempo e implementei na classe do jframe e funcionou.

Criado 8 de novembro de 2011
Ultima resposta 11 de nov. de 2011
Respostas 13
Participantes 4