netBeans 6.1 e iReport

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:

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

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.

[code]/*

  • 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;
}

}[/code]

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

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