Paginação

4 respostas
S

Alguem teria algo simples e objetivo?

tenho um codigo que peguei na internet que faz isso porem quando acrescento a clausula where ou ontra da erro se alguem puder me ajudar agradeço desde já.

segue o codigo que esta dando erro:

<%@ page language=java import=java.sql.* %>

<html>

<head><title>Aprendendo JSP</title>

</head>

<body>

<%
// Este exemplo mostra como paginar os resultados de uma
// tabela MySQL
// o nome da base de dados é “test”

String url = jdbc:mysql://localhost/test;

String usuario = root;

String senha = 1234;

Connection conn = null;

try{

Class.forName(“com.mysql.jdbc.Driver”).newInstance();

conn = DriverManager.getConnection(url, usuario, senha);

}

catch(SQLException ex){

out.println("SQLException: " + ex.getMessage() + “<br>”);

out.println("SQLState: " + ex.getSQLState() + “<br>”);

out.println("VendorError: " + ex.getErrorCode() + <br>);

}

catch(Exception e){

out.println(“Problemas ao tentar conectar com o banco de dados”);

}

// conn é a conexão com o banco de dados
int limit = 5; // quantidade de resultados por página

// obtém a quantidade de registros

PreparedStatement pstmt = conn.prepareStatement(SELECT COUNT(*) AS c FROM CLIENTES);

ResultSet rs = pstmt.executeQuery();

rs.next();

int total_rows = Integer.parseInt(rs.getString(c));
String pagina = request.getParameter(pagina); // página atual

if(pagina == null){

pagina = 1;

}

int limitValue = (Integer.parseInt(pagina) * limit) - limit;

PreparedStatement pstmt2 = conn.prepareStatement(

"SELECT * FROM CLIENTES LIMIT " + limitValue + ", " + limit);

ResultSet rs2 = pstmt2.executeQuery();
while(rs2.next()) {

int id = rs2.getInt(“CODIGO”);

out.println("ID: " + id + “<br>”);

String nome = rs2.getString(“NOME”);

out.println("NOME: " + nome + “<br>”);

int idade = rs2.getInt(“IDADE”);

out.println("IDADE: " + idade + <br><br>);

}
int anterior;

if(Integer.parseInt(pagina) != 1){

anterior = Integer.parseInt(pagina) - 1;

out.println("<a href=?pagina=" + anterior + > + limit + " Anteriores</a>");

}

else

out.println(limit + " Anteriores ");

int numOfPages = total_rows / limit;
int i;

for(i = 1; i <= numOfPages; i++){

if(i == Integer.parseInt(pagina)){

out.println("<b>" + i + "</b> “);

}

else{

out.println(”<a href=?pagina=" + i + > + i + "</a> ");

}

}
if((total_rows % limit) != 0){

if(i == Integer.parseInt(pagina)){

out.println(i + " “);

}

else{

out.println(”<a href=?pagina=" + i + > + i + "</a> ");

}

}
int proxima;

if((total_rows - (limit * Integer.parseInt(pagina))) > 0){

proxima = Integer.parseInt(pagina) + 1;
out.println("<a href=?pagina=" + proxima + ">Próximos " + limit + </a>”);

}

else

out.println("Próximos " + limit);

%>

</body>
</html>

Necessariamente não tenho que usar esta forma caso algum amigo tenho uma solução mais simples.

Abraços e obrigado

Valmir Lopes

4 Respostas

B

Ola,

Pô, da uma olhada no displaytag, é simples de usar:

http://displaytag.sourceforge.net/11/

S

Bruno, ajuda seu irmão …não tem como me ajudar mais claro…

te agradeço

Um forte abraço.

Valmir lopes

B

Ola,

Bom, mais claro???

Este link que te passei é pra uma biblioteca que faz paginação, já está pronto pra usar… só vc montar uma lista com o resultado de sua busca e mandar ela exibir, ela já faz o tratamento de paginação pra vc… dá uma olhada na documentação dela.

S

Bruno agradeço a ajuda , mais não consegui enteder não…

Se puder me ajudar melhor…

Valmir Lopes

Criado 15 de janeiro de 2008
Ultima resposta 15 de jan. de 2008
Respostas 4
Participantes 2