Registros do ResultSet

10 respostas
B

Olá, preciso da ajuda de vcs no seguinte:

Como faço para saber a quantidade de registros retornados por um ResultSet?
Ou como saber se o ResultSet retornou mais de um registro?

OBS: Sem usar o Select cout (*) from tabela

Desde já agradeço a ajuda de vcs.

10 Respostas

dreampeppers99

Burarama:
Olá, preciso da ajuda de vcs no seguinte:

Como faço para saber a quantidade de registros retornados por um ResultSet?
Ou como saber se o ResultSet retornou mais de um registro?

OBS: Sem usar o Select cout (*) from tabela

Desde já agradeço a ajuda de vcs.

O ResultSet em sí possui métodos para ver se há registros e percorrer ele, uma maneira é percorrer ele e ir contando.

leoramos

getFetchSize() não te serve?

B

O getFetchSize() não retorna o número de registros do ResulSet.

Por exemplo quando eu rodo minha aplicação ela trás apenas 2 registros (correto), já o getFetchSize() retornou o número 100.

Segue o meu código:

Connection con = ConnectionFactory.getConnection();

                String sql = "SELECT id_reserva, horario_termino_reserva, horario_inicio_reserva " +
                        "FROM reservas " +
                        "WHERE auditorio_reserva='" + reserva.getAuditorio()+"' and " +
                        "data_inicio_reserva between'" + reserva.getDataInicio() + "' and' " + reserva.getDataTermino()+ "'";

                 PreparedStatement stmt = con.prepareStatement(sql);
                 System.out.println(sql);
                ResultSet rs = stmt.executeQuery();

Obrigado.

M

posiciona o cursor no último registro e faz ele retornar a linha q ele está:

rs.last();
rs.getrow();

B

Fiz o que pediu, mas tá dando o seguinte erro:

15/07/2011 14:20:10 Interface.frmReservar btnSalvaAlteracoesActionPerformed SEVERE: null java.sql.SQLException: ResultSet may only be accessed in a forward direction. at net.sourceforge.jtds.jdbc.JtdsResultSet.checkScrollable(JtdsResultSet.java:304) at net.sourceforge.jtds.jdbc.JtdsResultSet.last(JtdsResultSet.java:551) at DAO.DAOCadastroReserva.validaDataHorario(DAOCadastroReserva.java:326) at DAO.DAOCadastroReserva.AlteraReserva(DAOCadastroReserva.java:256) at Controle.ControleCadastroReserva.controleAlteraReserva(ControleCadastroReserva.java:83) at Interface.frmReservar.salvaAlteracao(frmReservar.java:362) at Interface.frmReservar.btnSalvaAlteracoesActionPerformed(frmReservar.java:1175) at Interface.frmReservar.access$400(frmReservar.java:40) at Interface.frmReservar$9.actionPerformed(frmReservar.java:740) 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:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) 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)

M

Como vc fez?

B
public boolean validaDataHorario(Reserva reserva ) throws SQLException{

            if (reserva.getAuditorio().equals("Nenhum")){

               return true;
           }
           else{
                Connection con = ConnectionFactory.getConnection();

                String sql = "SELECT id_reserva, horario_termino_reserva, horario_inicio_reserva " +
                        "FROM reservas " +
                        "WHERE auditorio_reserva='" + reserva.getAuditorio()+"' and " +
                        "data_inicio_reserva between'" + reserva.getDataInicio() + "' and' " + reserva.getDataTermino()+ "'";

                 PreparedStatement stmt = con.prepareStatement(sql);
                 System.out.println(sql);
                ResultSet rs = stmt.executeQuery();   
                rs.last();
                    int registros = rs.getRow();
                    rs.beforeFirst();

                if (!rs.next()){  //se retornar algum valor for falso então é igual a true. Ou seja, não retorna valor.

                    return true;
                }                

                else {
                   
                    System.out.println(registros);
                    if (rs.getInt("id_reserva")==reserva.getId()){
                        if(rs.isFirst()){
                             return true;
                        }
                            return false;
                    }

                    else if(reserva.getHorarioInicio().after(rs.getTime("horario_termino_reserva")) ||
                            reserva.getHorarioTermino().before(rs.getTime("horario_inicio_reserva"))){
                        return true;
                    }
                    return false;

                }
           }
    }
M

http://www.guj.com.br/java/72186-erro-resultset-may-only-be-accessed-in-a-forward-direction

B

Segui a dica do amigo acima e deu certo!

XD

Muito Obrigado!!

M

Blz, coloca RESOLVIDO, no título do tópico

Criado 14 de julho de 2011
Ultima resposta 15 de jul. de 2011
Respostas 10
Participantes 4