JProgressBar com Banco JDBC

1 resposta
E

Oi pessoal! Tudo bom!?

Eu estou fazendo ua aplicação java swing, e na aplicação tem uma importação de dados, e na impoortação eu coloquei uma JProgressBar para mostrar o andamento para o usuario.

Eu coloquei a JProgressbar, e na hora que eu aperto o botão ele vai atualizando o banco, porem, a JProgressBar fica parada mostrando somente quando termina o processo, eu ja li neste forum que posso usar thread, o que acontece, é que simplesmente eu tentei de todos os jeitos possiveis que imaginei com thread, mas nenhum jeito que eu fiz deu certo... criei classe separada, joguei o resultset para executar na thread.. porem o resultset diz que fica fechado...

A ultima coisa que tentei, foi fazer com que a classe do banco seja uma thread.. vou colocar o codigo para vocês verem aqui...

Por favor se alguem souber como fazer esta proeza, me digam, muito obrigado!

package cadastro.dao;

import java.lang.reflect.InvocationTargetException;
import java.sql.*;
import java.util.ArrayList;
import javax.swing.*;
import cadastro.beans.Lotes;
import cadastro.util.ThreadProgressbar;

public class ImportaLotesDB extends Thread {
    
    private ResultSet rs;
    private int leilao;
    private String tipo;
    
    public int countLotes(int leilao, String tipo, String dataLeilao) {
        
        Connection conn = ConnectionManager.getAccessConexao();
        
        String sql = "SELECT COUNT(Leilao.Lote) AS qtdeAchados";
              sql += " FROM (Leilao INNER JOIN Empresa ON Leilao.IdEmpresa = Empresa.IdEmpresa)";
              sql += " INNER JOIN Veiculo ON (Veiculo.IdLeilao = Leilao.IdLeilao) AND";
              sql += " (Veiculo.IdEmpresa = Leilao.IdEmpresa) AND (Veiculo.Placa = Leilao.Placa)";
              sql += " AND (Empresa.IdEmpresa = Veiculo.IdEmpresa)";
              sql += " WHERE Leilao.dataleilao = #"+ dataLeilao +"#";
        System.out.println("SQL = " + sql);
        
        try {             
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);                        
            
            if(rs.next()){
                return rs.getInt(1);
            }
            
        } catch (SQLException e) {
            System.out.println("Erro de sql!!!!!");
            e.printStackTrace();
            
        } finally {
        	ConnectionManager.closeMysql(conn);
        }
        
        return 0;
    }
    
    public void importaLotes(int leilao, String tipo, String dataLeilao, JProgressBar importacaoDadosProgressBar) {
        
        if ( importacaoDadosProgressBar != null ) {
            importacaoDadosProgressBar.setMinimum(0);
            importacaoDadosProgressBar.setMaximum(countLotes(leilao,tipo,dataLeilao));                        
        }                                        
        
        // Deleta todos os registros dos lotes
        LotesDB.deleteAll(leilao,tipo);
        
        Connection conn = ConnectionManager.getAccessConexao();
        
        String sql = "SELECT Leilao.Lote, Veiculo.Tipo, Veiculo.AnoModelo,";
              sql += " Veiculo.Placa, Veiculo.Cor, Veiculo.Cidade, Veiculo.Estado";
              sql += " FROM (Leilao INNER JOIN Empresa ON Leilao.IdEmpresa = Empresa.IdEmpresa)";
              sql += " INNER JOIN Veiculo ON (Veiculo.IdLeilao = Leilao.IdLeilao) AND";
              sql += " (Veiculo.IdEmpresa = Leilao.IdEmpresa) AND (Veiculo.Placa = Leilao.Placa)";
              sql += " AND (Empresa.IdEmpresa = Veiculo.IdEmpresa)";
        sql += " WHERE Leilao.dataleilao = #"+ dataLeilao +"#";
        System.out.println("SQL = " + sql);                 
        
        try {             
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);                         
            
            this.rs = rs;
            this.leilao = leilao;
            this.tipo = tipo;
            this.start();
            
            //ThreadProgressbar threadProgressBar = new ThreadProgressbar(importacaoDadosProgressBar);

        } catch (SQLException e) {
            System.out.println("Erro de sql!!!!!");
            e.printStackTrace();
            
        }  finally {
        	ConnectionManager.closeMysql(conn);
        }
    }
    
    public void run() {        
        try {
         while(rs.next()){                
                Lotes lotes = new Lotes();
                lotes.setLeilao(leilao);
                lotes.setLote(rs.getString(1));
                lotes.setTipo(tipo);
                lotes.setMarca(rs.getString(2));
                lotes.setAnoModelo(rs.getString(3));
                lotes.setPlaca(rs.getString(4));
                lotes.setFoto("");
                lotes.setCor(rs.getString(5));
                lotes.setCidade(rs.getString(6));
                lotes.setEstado(rs.getString(7));
                lotes.setRegiao("");
                lotes.setZona("");
                lotes.setDetalhes("");
                lotes.setLanceMinimo(0.0f);
                lotes.setQtdeLances(0);
                lotes.setInicio("");
                lotes.setFim("");
                lotes.setClienteAtual("");
                lotes.setEmailClienteAtual("");
                lotes.setLanceClienteAtual(0.0f);
                lotes.setCliente2("");
                lotes.setEmail2("");
                lotes.setMaiorLance2(0.0f);
                lotes.setCliente3("");
                lotes.setEmail3("");
                lotes.setMaiorLance3(0.0f);   
                lotes.setValorLiberacao(0.0f);
                lotes.setOferta(0.0f);
                
                // inseres os dados no outro banco
                LotesDB.insert(lotes);
            }         
         } catch (SQLException e) {
            System.out.println("Erro de sql!!!!!");
            e.printStackTrace();
            
        }
    }
}

1 Resposta

E

O Método que eu estou usando é o importalotes

Criado 15 de fevereiro de 2005
Ultima resposta 15 de fev. de 2005
Respostas 1
Participantes 1