Erro no update [resolvido]

2 respostas
emmanuelrock

Olá pessoal, mais uma vez peço a colaboração de vcs, seguindo o código abaixo, quando eu altero uma propriedade no meu cadastro, eu chamo o método alterar passando o objeto com as alterações e o código para fazer o update:

private ResultSet buscar(String codigo){
        Conexao con = new Conexao();
        Statement stmt;

        try {
            stmt = con.getConnection().createStatement();
            String consulta = "SELECT * FROM propriedade WHERE cod_prop =  "+ codigo;               
            ResultSet resultado = stmt.executeQuery(consulta);            

            if (resultado!=null){
                return resultado;
            }else
                return null;
        } catch (SQLException ex) {
           JOptionPane.showMessageDialog(null,"Erro inesperado!", "Erro!",JOptionPane.ERROR_MESSAGE);
           return null;
        }
            
    }

    public void alterar(Propriedade objPropriedade, String codigo) throws SQLException{       
        ResultSet resultado = buscar(codigo);
     
        if (resultado!=null){
            Conexao con = new Conexao();
            Statement stmt = con.getConnection().createStatement();

            String consulta = "UPDATE propriedade SET nome_prop= \"" + objPropriedade.nome_prop + "\", municipio= \"" + objPropriedade.municipio +
            "\", area= " + objPropriedade.area + " WHERE cod_prop= " + codigo + ";";
            stmt.execute(consulta);
         
            resultado = buscar(codigo);

            ResultSetMetaData rsmd = resultado.getMetaData();

            int colNums = rsmd.getColumnCount();

            Object objects[] = new Object[colNums];

            for(int i=0;i<colNums;i++){
                objects[i] = resultado.getObject(i+1); //é nessa linha que acontece o erro
            }            
         
        }        
    }

Esta dando o seguinte erro:

java.sql.SQLException: Before start of result set
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
        at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:835)
        at com.mysql.jdbc.ResultSetImpl.getObject(ResultSetImpl.java:4768)
        at sysfarm.Propriedade.alterar(Propriedade.java:109)
        at gui.CadastroPropriedades.btnSalvarActionPerformed(CadastroPropriedades.java:247)
        at gui.CadastroPropriedades.access$100(CadastroPropriedades.java:28)
        at gui.CadastroPropriedades$2.actionPerformed(CadastroPropriedades.java:95)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6216)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5981)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4583)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4413)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4413)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Qual seria o erro neste código?

2 Respostas

pmlm

Ainda não moveste o cursor para a primeira (e única neste caso, presumo) posição do resultSet

if (resultado.next()){
            for(int i=0;i<colNums;i++){
                objects[i] = resultado.getObject(i+1); //é nessa linha que acontece o erro
            }            
}
emmanuelrock

Valew Portuga!!!

Criado 14 de maio de 2009
Ultima resposta 15 de mai. de 2009
Respostas 2
Participantes 2