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]