Problemas em paginação

2 respostas
Triplo_X

Oi, estou enfrentando problemas para paginar tópicos vindos do banco.

Eu não vou usar taglib pois o conteúdo do meu projeto é intenso e o deixará lento.

<%@page language="java" import="database.Conexao"%>
<%@page import="java.sql.*"%>
<%@page contentType="text/html" pageEncoding="iso-8859-1"%>

<%

String parametro = request.getParameter("pr");

   if (parametro == null) {
        response.sendRedirect("paginacao.mc?pr=0");
   } else {

int limitePorPagina = 5; 
        String pr1 = request.getParameter( "pr" );
        try{ 
            //Class.forName( "com.mysql.jdbc.Driver" ).newInstance(); 
                    
    Connection  conn = Conexao.getConexao();
    PreparedStatement pstmt = null;
    ResultSet rs = null;

         pstmt = conn.prepareStatement( "SELECT *, count(*) as c FROM noticias LIMIT " + 
                 pr1 + "," + String.valueOf( limitePorPagina ));
         rs = pstmt.executeQuery();
         rs.next();
          
        int totalregs = Integer.parseInt( rs.getString( "c" ) ); 
        int totalpgs = Math.round( totalregs / limitePorPagina ); 
        if( ( totalregs % limitePorPagina ) > 0 ) totalpgs++;
        int pr = Integer.parseInt( request.getParameter( "pr" ) );
        
        %>
        <% while( rs.next() ) {
            String id = rs.getString( "id" ); 
        String nm = rs.getString( "title" ); 
        String mail = rs.getString( "noticia" );
        %> 
        <%=id%> | <%=nm%>| <%=mail%>
        <br> <% } %>
        <% if( pr > 0 ){ %>
        [<a href="?pr=0">Primeira Página</a>] 
        [<a href="?pr=<%=pr-limitePorPagina%>">Anteriores</a>] 
        <% } %>
        <% if( pr < ( totalpgs * limitePorPagina ) - limitePorPagina ) { 
            %> [<a href="?pr=<%=pr+limitePorPagina%>">Próximo</a>] 
            [<a href="?pr=<%=( totalpgs * limitePorPagina ) - limitePorPagina%>">
            Ultima</a>] 
            <% } 
        } catch (SQLException sqlex) {
            out.println(sqlex);
        }
        
        }
%>

Bom, meu código é esse, e a excessão é essa: java.sql.SQLException: Illegal operation on empty result set. .

Deve ser pelo uso do while logo após o rs.next() mas tentei e não consegui resolver.

Peço ajuda de vocês.
E quando eu aprender, pretendo fazer isso com Stripes ou JSF.

att.

2 Respostas

janjan

acredito que voce nao pode fazer um select * e um count(*) ao mesmo tempo
pois o select * traz varias rows e o count traz uma só
tenta fazer separado isso
vlw

Triplo_X

Correto, antes eram 2 PreparedStatement mas também geravam a excessão.

Daí eu encontrei uma solução:

http://www.portaljava.com/jnuke/bin/news/view?id=353

Ainda não resolvendo encontrei finalmente este:
http://www.devmedia.com.br/articles/viewcomp.asp?comp=5298

Pena que vou ter que fazer isso toda vez que precisar paginar =/
Se eu soubesse em JSF, mas já tentei aprender, não consegui ainda.

Obrigado mesmo assim.

Att.

Criado 10 de junho de 2009
Ultima resposta 10 de jun. de 2009
Respostas 2
Participantes 2