Ajuda na classe

5 respostas
fabiodurgante
tenho a minha classe

package percistencia;

import java.sql.Connection;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.view.JasperViewer;

    public class ClienteRel {


public void geraRelatorio(ResultSet rs) throws JRException, Exception{
Connection con = Postgre.getConexao();


JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );

Map parameters = new HashMap();

JasperFillManager.fillReportToFile( "BibliotecaPessoal.jasper", parameters, jrRS );

JasperExportManager.exportReportToPdfFile( "BibliotecaPessoal.jrprint" );


JasperRunManager.runReportToPdfFile("BibliotecaPessoal.jasper", parameters, jrRS);

JasperViewer.viewReport( "BibliotecaPessoal.pdf", false );
}

public static void main(String[] args) throws JRException, Exception{
new ClienteRel();
}
}

o metodo que espera um ResultSet e tenho o metodo da pesquiza

        public List<Cliente> listar(String Nome_Cliente) {
        String sql = "SELECT * FROM Cliente WHERE UPPER(nome_cliente) LIKE ?";
        try {
            PreparedStatement stmt = getConexao().prepareStatement(sql);
            stmt.setString(1, "%" + Nome_Cliente.toUpperCase() + "%");
            ResultSet rs = stmt.executeQuery();
         
            return getCliente(rs);
            
        } catch (SQLException sQLException) {
            System.out.println("Erro ao listar Cliente");
        }
        return null;
    }

o metodo q me retorna uma lista dessas pesquisa

 public List<Cliente> getCliente(ResultSet rs) throws SQLException {
        if(rs == null)
            return null;
        
        List<Cliente> lista = new ArrayList<Cliente>();
        while(rs.next()) {
            Cliente cli = new Cliente();
            cli.setid_Cliente(rs.getInt("id_cliente"));
            cli.setNome_Cliente(rs.getString("nome_cliente"));
            cli.setEstado_Cliente(rs.getString("estado_cliente"));
            try {
                cli.setCpf_Cliente(rs.getString("cpf_cliente"));
            } catch (excessao ex) {}
            cli.setData_Cliente(new Date(rs.getDate("data_cliente").getTime()));
            lista.add(cli);
        }
        return lista;
    }

 ClienteDao cliente = new ClienteDao();
            ClienteRel cli = new ClienteRel();
            
         List<Cliente> lista = cliente.listar(campo_pra_pesquisaNome.getText()); 

         try{
                cli.geraRelatorio((ResultSet) lista);

 } catch (Exception ex) {
                Logger.getLogger(ConsultarCliente.class.getName()).log(Level.SEVERE, null, ex);
            }

e o erro seguinte
17/12/2008 11:05:18 apresentacao.ConsultarCliente jImprimirActionPerformed
SEVERE: null
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.sql.ResultSet

alguem ajuda ai !!!!!!!

5 Respostas

T

O erro é óbvio (você não pode passar um ArrayList para algo que espera um ResultSet), então você precisa criar um método igualzinho que aceite um ArrayList, não um ResultSet.

fabiodurgante

e como que eu crio um metodo que me retorne um ResultSet???

B
cli.geraRelatorio((ResultSet) lista);

Tire o ResultSet e adicione um método geraRelatorio em ClienteRel que receba um List.

fabiodurgante
public ResultSet listarRel(String Nome_Cliente) {
        String sql = "SELECT * FROM Cliente WHERE UPPER(nome_cliente) LIKE ?";
        try {
            PreparedStatement stmt = getConexao().prepareStatement(sql);
            stmt.setString(1, "%" + Nome_Cliente.toUpperCase() + "%");
            ResultSet rs = stmt.executeQuery();
         
            return (rs);
            
        } catch (SQLException sQLException) {
            System.out.println("Erro ao listar Cliente");
        }
        return null;
    } 
criei esse ai e deu o seguinte

presentacao.ConsultarCliente jImprimirActionPerformed
SEVERE: null
net.sf.jasperreports.engine.JRException: Error loading object from file : Cliente.pdf
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:92)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:64)
        at net.sf.jasperreports.view.JRViewer.loadReport(JRViewer.java:1417)
        at net.sf.jasperreports.view.JRViewer.<init>(JRViewer.java:253)
        at net.sf.jasperreports.view.JRViewer.<init>(JRViewer.java:224)
        at net.sf.jasperreports.view.JasperViewer.<init>(JasperViewer.java:142)
        at net.sf.jasperreports.view.JasperViewer.viewReport(JasperViewer.java:409)
        at net.sf.jasperreports.view.JasperViewer.viewReport(JasperViewer.java:340)

criou o pdf em branco
fabiodurgante
agora sim relatorioc FUNCIONANDO ai ta a classe pra faze relatorio cliente   
  
package percistencia;   
  
import net.sf.jasperreports.engine.*;     
import net.sf.jasperreports.view.*;     
import java.sql.*;     
import java.util.*;     
/**  
*  
* @author Fabio  
*/   
public class ClienteRel {   
  
       
public void ClienteRel(ResultSet rs) throws JRException  {   
  
            JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );     
                         
            Map parameters = new HashMap();     
  
     JasperPrint jprint = JasperManager.fillReport("C:\teste\relatorios\Cliente.jasper", parameters, jrRS);   
     
            JasperViewer.viewReport(jprint,false);     
  
        }     
         
}     
  
ai o metodo que retorna o resultSet para o ClienteRel   
  
                public ResultSet listarRelCliente(String Nome_Cliente) {   
        String sql = "SELECT * FROM Cliente WHERE UPPER(nome_cliente) LIKE ?";   
        try {   
            PreparedStatement stmt = getConexao().prepareStatement(sql);   
            stmt.setString(1, "%" + Nome_Cliente.toUpperCase() + "%");   
            ResultSet rs = stmt.executeQuery();   
           
            return (rs);   
               
        } catch (SQLException sQLException) {   
            System.out.println("Erro ao listar Cliente");   
        }   
        return null;   
    }   
  
  
aqui no botao que faz a pesquisa e chama a funcao e passa pro relatorio o resultSet da pesquisa   
  
        ClienteDao cliente = new ClienteDao();   
            ClienteRel cli = new ClienteRel();   
               
         ResultSet rs = cliente.listarRelCliente(campo_pra_pesquisaNome.getText());   
           
            try {   
  
               cli.ClienteRel(rs);   
  
            } catch (Exception ex) {   
                Logger.getLogger(ConsultarCliente.class.getName()).log(Level.SEVERE, null, ex);   
            }   
  
AI AGRADECO A TODOS PELA AJUDA VALEUUUUUUUUUUUU
Criado 17 de dezembro de 2008
Ultima resposta 17 de dez. de 2008
Respostas 5
Participantes 3