Ajuda na logica do sql

Pessoal!!!

estou fazendo uma paginacao no braco!!! com sql… é mais para aprendizagem!!!

seguinte listeis meus registros que estao no banco… ate ai tudo normal…
consegui fazer listar somente quantos eu quero por pagina, mas ai entra o problema:

tenho 10 registros no banco de dados… quero que por “pagina” ele liste apenas os primeiros 5, depois quando eu clicar em PROXIMO eu quero que ele liste os outros cinnco e assim por diante… claro na mesma pagina!!!

alguem ai pode me ajudar a respeito disso!!!

valeu ate mais!!!

Postar a sua lógica de paginação seria o mais viável nesse caso, mas o que agora é possível lhe dizer é que você pode passar um parâmetro pela URL pra indicar qual registro iniciar a amostragem. Exemplo:

Você irá basear essa paginação no uso do método ResultSet absolute() que, através de um parâmetro int move o cursor para determinada posição. Usaremos o parâmetro “start” para indicar a partir de qual registro iremos mostrar.

Então é simples:

// abre o bd, cria o ResultSet, etc

int start = request.getParameter("start");

if (start != null)
  { objResultSet.absolute(start); }
else
  {
   objResultSet.moveFirst();
   start = 1;
  }

for (int record = 1; record <= 5; record++)
  {
   // imprime registro
  objResultSet.moveNext();
  }

Então, os links para “Próxima página” deverão ser algo do tipo:

<a href="page.jsp?start=<%= (start + 5) %>">Próxima página</a>

Acredito que deva haver alguma(s) maneira(s) de fazer isso mais “elegantemente”, mas essa foi a idéia quem e veio à cabeça nesse momento. Qualquer dúvida, poste aí.

<%
	int LimitePagina = 5;
	int PrimeiraPagina = 1;
	
	
	
    Class.forName("org.postgresql.Driver");
    Connection con = DriverManager.getConnection("jdbc:postgresql://localhost/postgres", "postgres", "postgres2");
    Statement st = con.createStatement(); 
	Statement st2 = con.createStatement(); 
	ResultSet rs = st.executeQuery("SELECT * FROM imovel LIMIT "+LimitePagina+"/"+PrimeiraPagina+"");
	ResultSet rs2 = st2.executeQuery("SELECT count(*) as c FROM imovel"); 
	rs2.next();
	int TotalRegistros = Integer.parseInt( rs2.getString( "c" ) );
	int TotalPaginas  = Math.round( TotalRegistros / LimitePagina );
	
		
	
    if( PrimeiraPagina > 0 )
	{
%>
  [<a href="?=1">Primeira Página</a>] [<a href="?=<%=PrimeiraPagina-LimitePagina%>">Anteriores</a>] 
 
<%
    }
%>
  
<%
    if( PrimeiraPagina < ( TotalPaginas * LimitePagina ) - LimitePagina )
	{
%>
  	[<a href="?=<%=PrimeiraPagina+LimitePagina%>">Próximo</a>] 
  	[<a href="?=<%=( TotalPaginas * LimitePagina ) - LimitePagina%>"> 
  	Ultima</a>] 

<%
    }
	while (rs.next())
    {
%>

cara ta ai todo o codigo desde conexao, listagem e criacao dos links…

so tem um detalhe ele NÃO ta funcionando a parte de navegacao…

sera que tu podes me ajudar?? hehe ou me expolicar o que eu estou fazendo de errado??

abraco te mais!!!

Cara não pode usar DisplayTag é muito facil de configurar e fica perfeito!!!

na verdade eu nao sei usar esse tal de displaytag…

e queria ver a diferenca entre os dois…

e tbm queria enteder melhor como funciona no SQL…

Cara, eu não tenho muita noção sobre o uso da clásula LIMIT.

cara o LIMIT serve pra “limitar” qts registros virao por paginas entendeu??

no meu caso eu quero que liste 5 registros por pagina, criei uma variavel para armazenar quantos registros eu quero que mostre… e dei o select…
mas assim oh ele ta listando perfeitamente, cria os links e tudo certinhu, so que os links nao estao funcionando…

tenho eu em mente que seja por causa do Parametro da URL e eu nao saco muito disso entende?? se vc pudesse me dar uma ajudinha nesse quesito, o resto eu consigo terminar…

abraco!

Mas eu não entendi pq voc~e usou aquela concatenação de:

LimiteRegistros + “/” + PrimeiraPagina

O que isso define?

cara estou usando Postgres…

e postgres ao contrario de outro bancos quando se trata de LIMIT ele comeca ler ao contrario…

acompanha o raciocinio…

se fosse com outro banco de dados o limit funcionaria da seguinte maneira…

selecione todos os registros da tabem imovel a contar de 1 ate 5 ( select * from imovel limit 1/5)

no postgres e ao contrario seri (select * from imovel 5/1)

entendeu?

tem alguem que sabe o que estou fazendo de errado???