netBeans 6.1 e iReport

4 respostas
W

Ola, estou testando um codigo da minha apostila da EADCON sobre java, mysql e iReport, e quando eu compilo
esta aparecendo o seguinte erro:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.mysql.jdbc.ResultSetImpl at appcadastro.AppCadastro.gerarReport(AppCadastro.java:137) at appcadastro.AppCadastro.actionPerformed(AppCadastro.java:122) at java.awt.Button.processActionEvent(Button.java:388) at java.awt.Button.processEvent(Button.java:356) at java.awt.Component.dispatchEventImpl(Component.java:3984) at java.awt.Component.dispatchEvent(Component.java:3819) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
O que pode estar gerando esse erro?
VLW :smiley:

4 Respostas

pro_websis

Da uma fuçada nas linhas 137 e 122 da classe AppCadastro, provavelmente o erro esta por ali ou pode te levar o erro

W
Ai, vou postar o codigo pra vcs poderem analisar melhor, lembrando que eu uso o netBeans 6.1, MySQL6 e o iReport, todos configurados e testados, ja testei codigos usando apenas o MySQL apenas, e outros c o iReport, e funcionaram tranquilo, mas juntos n ta pegando.
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package appcadastro;

/**
 *
 * @author Wibson
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.sql.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSet;
import com.mysql.jdbc.Statement;
import net.sf.jasperreports.engine.export.JRPdfExporter;


public class AppCadastro extends Frame implements ActionListener
{
    TextField nome = new TextField(71);
    TextField descricao = new TextField(68);
    Button salvar = new Button("Salvar");
    Button limpar = new Button("Limpar");
    Button report = new Button("Relatório");
    Button sair = new Button("Sair");
    Panel geral;
    Curso c = new Curso();
    Label result = new Label();
    
    public AppCadastro()
    {
        super("Aplicação de cadastro");
        setSize(800, 285);
        setLocation(200, 100);
        EvtJanela evt = new EvtJanela();
        addWindowListener(evt);
        MenuBar barraMenu = new MenuBar();
        Menu menuArquivo = new Menu("Arquivo");
        MenuItem itemCadastro = new MenuItem("Novo Curso");
        MenuItem itemSair = new MenuItem("Sair", new MenuShortcut(KeyEvent.VK_R));
        menuArquivo.add(itemCadastro);
        menuArquivo.add(itemSair);
        barraMenu.add(menuArquivo);
        setMenuBar(barraMenu);
        itemCadastro.addActionListener(this);
        itemSair.addActionListener(this);
        Panel painelApp = new Panel();
        Panel painelCadastro = new Panel();
        painelApp.setBackground(SystemColor.control);
        painelCadastro.setBackground(SystemColor.control);
        geral = new Panel();
        geral.add(painelApp,"J1");
        geral.add(painelCadastro,"J2");
        geral.setLayout(new CardLayout());
        add("Center", geral);
        painelCadastro.setLayout(new FlowLayout());
        painelCadastro.add(new Label("Nome:"));
        painelCadastro.add(nome);
        painelCadastro.add(new Label("Descrição:"));
        painelCadastro.add(descricao);
        String[] colunas = {"NOME", "DESCRIÇÃO"};
        Object[][] conteudo = {{"", ""}};
        JTable tabela =  new JTable(conteudo, colunas);
        tabela.setPreferredScrollableViewportSize(new Dimension(560, 120));
        painelCadastro.add(new JScrollPane(tabela));
        Panel painelButton = new Panel();
        painelButton.add(salvar);
        painelButton.add(limpar);
        painelButton.add(report);
        painelButton.add(sair);
        painelButton.add(result);
        painelCadastro.add("South", painelButton);
        salvar.addActionListener(this);
        limpar.addActionListener(this);
        report.addActionListener(this);
        sair.addActionListener(this);
    }
    
    public static void main(String[] args)
    {
        AppCadastro exec = new AppCadastro();
        exec.setVisible(true);
    }
    
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() instanceof MenuItem)
        {
            MenuItem item = (MenuItem) e.getSource();
            if (item.getLabel().equals("Sair"))
            {
                System.exit(0);
            }
            if (item.getLabel().equals("Novo Curso"))
            {
                CardLayout pilha = (CardLayout) geral.getLayout();
                pilha.next(geral);
            }  
        }
        if (e.getSource()==salvar)
        {
            c.setNome(nome.getText());
            c.setDescricao(descricao.getText());
            incluir();
            limpar();
        }
        if (e.getSource()==limpar)
        {
            limpar();
        }
        if (e.getSource()==report)
        {
            gerarReport();
        }
        if (e.getSource()==sair)
        {
            System.exit(0);
        }
    }

    public void gerarReport()
    {
        try
        {
            Connection con = connection();
            Statement stm = (Statement) con.createStatement();
            String query = "Select * from Curso";
            ResultSet rs = (ResultSet) stm.executeQuery(query);
            JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
            JRExporter jrpdf = new JRPdfExporter();
            JasperPrint print;
            OutputStream fos = null;
            print = JasperFillManager.fillReport("iReport.jasper", null, jrRS);
            fos = new FileOutputStream("iReport.pdf");
            jrpdf.setParameter(JRExporterParameter.OUTPUT_STREAM, fos);
            jrpdf.setParameter(JRExporterParameter.JASPER_PRINT, print);
            jrpdf.exportReport();
            fos.close();
            JasperViewer.viewReport(print);
        
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JRException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void incluir()
    {
        try 
        {
            Statement statement = (Statement) connection().createStatement();
            String sql = "Insert into Curso VALUES (

"+  c.getNome()+    
                                             "

, 

"+   c.getDescricao()+"

)";
                statement.executeUpdate(sql);
            result.setText("CURSO INSERIDO COM SUCESSO!");
        } catch (SQLException e)
        {
            e.printStackTrace();
            result.setText("OCORRERAM ERROS NA INSERÇÃO!");
        } 
    }
    
    public void consultar()
    {
        ResultSet resultadoBanco = null;
        String consulta = "Select * from Curso";
        try
        {
            PreparedStatement comandoBanco = connection().prepareStatement(consulta);
            resultadoBanco = (ResultSet)comandoBanco.executeQuery();
            connection().close();
        } catch (Exception Erro)
        {
            result.setText("OCORRERAM ERROS NA CONSULTA!");
        }
    }
    public void limpar()
    {
        nome.setText("");
        descricao.setText("");
    }

    public Connection connection()
    {
        Connection connection = null;
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (InstantiationException e)
        {
            e.printStackTrace();
        } catch (IllegalAccessException e)
        {
            e.printStackTrace();
        } catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        }
    
        try
        {
            connection = (Connection) DriverManager.getConnection(
                                           "jdbc:mysql://localhost:3306/root?" +
                                                 "user=root&password=mysteri0");
        } catch (SQLException e)
        {
            e.printStackTrace();
        }
        return connection;
    }
}
class EvtJanela extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    {
        System.exit(0);
    }
}

class Curso
{
    Integer id = new Integer(0);
    String nome = new String();
    String descricao = new String();
    
    public String getDescricao()
    {
        return descricao;
    }
    public void setDescricao(String descricao)
    {
        this.descricao = descricao;
    }
   
    public Integer getId()
    {
        return id;
    }
    
    public void setId(Integer id)
    {
        this.id = id;
    }
    
    public String getNome()
    {
        return nome;
    }
    
    public void setNome(String nome)
    {
        this.nome = nome;
    }
}
U

Bom, vc não deve instanciar classes específicas do teu Driver JDBC. E sim usar as Interfaces ofertadas pelo pacote java.sql.
Lembre-se que a idéia é justamente não prender tua aplicação a nenhum Banco de Dados específicos.

Tente isso :

import java.sql.Connection;  
import java.sql.ResultSet;  
import java.sqlStatement; 

//...

Statement stm = con.createStatement();  //SEM CAST!

//...

Acredito que deva te ajudar…

[]s

W

Funcionou sim!
Ta rodando sem erro algum!
Vlw pela ajuda!

Criado 25 de junho de 2008
Ultima resposta 26 de jun. de 2008
Respostas 4
Participantes 3