Banco de dados em uma thread

Oi pessoal, tudo bom!!?

Eu preciso executar um ResultSet de um banco de dados dentro de uma thread, e num to conseguindo… muito treta…

OLha miha clase ta assim, mas na hora que vou executar a thread, da um erro de que o ResultSet esta fechado “ResultSet is closed”, como faço para exeecutar um ResultSet dentro de uma Thread, olham meu codigo como esta:

[code]
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(); 
        
    } 
} 

}[/code]

em que linha ele aponta?

em que linha ele aponta?

dentro do run
while(rs.next()){

cara, dei uma olhada meio por cima no seu código e naum achei nada de incomum…

vc chama o método start() que chama o run().

vc atribuiu o rs ao this.rs antes de chamar o start…

verifique antes da atribuicao:

this.rs = rs;

se o rs do método está fechado utilizando o método isClosed.

if(rs.isClosed()) { System.out.println("FECHADO"); } else { System.out.println("ABERTO"); }

Beleza valew cara!!

Vou ver!!