Registros do ResultSet

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.

[quote=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.[/quote]

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

getFetchSize() não te serve?

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:

[code] 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();[/code]

Obrigado.

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

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

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)

Como vc fez?

[code] 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;

            }
       }
}[/code]

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

Segui a dica do amigo acima e deu certo!

XD

Muito Obrigado!!

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