Erro com ResultSet

Boa tarde galera!

Vocês poderiam me explicar porque está dando este erro???

Ele ocorre quando clica-se num botão de comando que pega o campo data e joga pra uma stored procedure do Banco de Dados Mysql5.0

Segue o código.

 private void cmdPesquisarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        try {
            vData = txtData.getText();
            RepositorioImpressao ri = new RepositorioImpressao();
            ResultSet rs = ri.mExecutaSPImpressao(vData);
            ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();
            DefaultTableModel aModel = (DefaultTableModel) tbTabela.getModel();
            int coluna = rsmd.getColumnCount();
            while (rs.next()) {
                Object[] objects = new Object[coluna];
       
                for (int i = 0; i < coluna; i++) {
                    objects[i] = rs.getObject(i + 1);
                }
                aModel.addRow(objects);
             }
            
            
        } catch (SQLException ex) {
            System.out.println("Erro: " + ex.getMessage());
            ex.printStackTrace();
        }
    }                                       

classe RepositorioImpressao:

public class RepositorioImpressao {
    
    
    public ResultSet mExecutaSPImpressao(String vParametro){
        
        String vComando = "{call spPegaOrdem " + "(" + vParametro + ")}";
        System.out.println("Comando para MySql executar a Query: " + vComando);
        
        Sql sql = new Sql();
        if (sql.mExecutaPesquisa(vComando) != null)
            return sql.mExecutaPesquisa(vComando);
        else
            return null;
        
    }
    
}

Classe Sql:

public ResultSet mExecutaPesquisa(String pComando){
            
            
            System.out.println(pComando);

            Connection vConexao = null;
            Statement vTrafego = null;

            mLogin();
            vConexao = Conexao.mConexaoAbrir(vUser, vPassword);
            vTrafego = vConexao.createStatement();
            
            ResultSet resultSet = (ResultSet) vTrafego.executeQuery(pComando);

            vConexao.close();

            return resultSet;

Valeu!!!

Ah…

o erro que aparece é o seguinte…

Comando para MySql executar a Query: {call spPegaOrdem (01/01/2010)}
{call spPegaOrdem (01/01/2010)}
Status da conexão : ABERTA
Erro: Operation not allowed after ResultSet closed
java.sql.SQLException: Operation not allowed after ResultSet closed
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
        at com.mysql.jdbc.ResultSet.checkClosed(ResultSet.java:644)
        at com.mysql.jdbc.ResultSet.getMetaData(ResultSet.java:2839)
        at br.com.matrix.mxroteamento.visual.FImpressao.cmdPesquisarActionPerformed(FImpressao.java:147)
        at br.com.matrix.mxroteamento.visual.FImpressao.access$100(FImpressao.java:21)
        at br.com.matrix.mxroteamento.visual.FImpressao$2.actionPerformed(FImpressao.java:62)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
Erro: Operation not allowed after ResultSet closed
java.sql.SQLException: Operation not allowed after ResultSet closed

Leia a mensagem de erro. Vc esta tentando usar um ResultSet que ja foi fechado.
Revise seu codigo, dentro do metodo mExecutaSPImpressao vc fecha o Resulset.

[]´s

jgbt

este é o negócio…

eu não fechoo ResulSet…

Você não deve usar Statement para chamar Stored Procedure. Use CallableStatement.

Seque um exemplo: http://www.java2s.com/Code/Java/Database-SQL-JDBC/CallStoredProcedureInMySql.htm

Valeo oyama…

Vou tentar deste modo, porém, tenho um outro código que funciona perfeitamente mesmo eu usando o Statement…

Você sabe qual seria o problema??

Ou você tem outro exemplo de como popular uma JTable com os dados do Mysql?

Valeo pela ajuda cara

Para chamar a procedure no oracle é assim:
Deve funcionar pra vc também;

CallableStatement cs; //Prepara a chama e mostra quantos parâmetros tem cs = getConnection().prepareCall("{call "+ NOME_PROCEDURE + "(?,?,?)}"); //Seta os parametros //1 posicao do parâmetro na chamada a procedure e param_1 valor do parâmetros cs.setInt(1 , param_1); cs.setInt(2, param_2); cs.setInt(3, param_3); cs.execute();

Beleza tma, aqui deu certo!

mas e agora como pego o resultado dessa procedure e jogo numa tabela?

[quote=Tché]jgbt

este é o negócio…

eu não fechoo ResulSet…[/quote]
tem certreza? :twisted:
olhei o seu codigo, e como falei antes, dentro do metodo mExecutaPesquisa o ResultSet esta sendo fechado.
Vou dar uma pista, ele não esta sendo fechado explicitamente, então talvez por isso vc não tenha notado.
Mas pode acreditar, vc esta fechando ele.

[]´s

jgbt

eu vi depois… rss falta de atençao…

mas ainda sim não estou conseguindo jogar na JTable o resultado dessa procedure!!

pode me ajudar?

Dá uma olhada nesse link, para ve como recuperar o retorno da procedure.

http://www.javafree.org/javabb/viewtopic.jbb?t=857371