Erro de paginação

5 respostas
S

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

<%

String url=jdbc:odbc:monitor;

Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);

Connection conn = DriverManager.getConnection(url, “”, “”);

int limit = 7; // quantidade de resultados por página

// obtém a quantidade de registros

PreparedStatement pstmt = conn.prepareStatement(

"SELECT COUNT(*) AS c FROM RAMAL where grupo = ‘hsbc pf’ ");

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 codigo, ramal, grupo FROM RAMAL where grupo = ‘hsbc pf’ order by ramal LIMIT " + limitValue + ", " + limit);

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

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

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

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

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

String idade = rs2.getString(“GRUPO”);

out.println("IDADE: " + idade + 

);

}
int anterior;

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

anterior = Integer.parseInt(pagina) - 1;

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

}

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("" + i + " “);

}

else{

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

}

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

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

out.println(i + " “);

}

else{

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

}

}
int proxima;

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

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

}

else

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

%>

Erro:
HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Exception in JSP: /index.jsp:32

29:

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

31:

32: PreparedStatement pstmt2 = conn.prepareStatement(

33: "SELECT codigo, ramal, grupo FROM RAMAL where grupo = ‘hsbc pf’ order by ramal LIMIT " + limitValue + ", " + limit);

34: ResultSet rs2 = pstmt2.executeQuery();

35:
Stacktrace:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.ServletException: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta ramal LIMIT 0.

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)

org.apache.jsp.index_jsp._jspService(index_jsp.java:135)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta ramal LIMIT 0.

sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)

sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)

sun.jdbc.odbc.JdbcOdbc.SQLPrepare(JdbcOdbc.java:4831)

sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:475)

sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:443)

org.apache.jsp.index_jsp._jspService(index_jsp.java:74)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.


Apache Tomcat/5.5.17

Agradeço aos amigos pela ajuda.

Valmir Lopes

5 Respostas

andreiribas

parece que o erro é na sua query, mais especificamente:

Erro de sintaxe (operador faltando) na expressão de consulta 'ramal LIMIT 0'.

teria que ver se o seu Banco de dados suporta essa operação.

S

é fiz no mysql deu certo , já no access tenho este erro. alguem saberia me dizer qual seria a solução… Ha tenho que usar o access…

abraços

shelter

maurenginaldo

É que no access vc não usa:

Limit 10

usa-se assim:

select top 10 campo1, campo2 ...
Pedrosa

E não reivente a roda use um componente que faça essa paginação automática e evite ao máximo o uso de scriplets no JSP é um antipattern:

displaytag:
http://displaytag.homeip.net/displaytag-examples-1.1/example-paging.jsp

S

pedrosa, me ajuda por favor …
queria usar as tag…mais estou com dificuldade de entender… poderia ser mais claro , ou me passar um exemplo seu…

POW DE AGRADEÇO PACAS PELA AJUDA… A TODOS DO FORUM TB…

ABRAÇOS

shelter

Criado 19 de janeiro de 2008
Ultima resposta 21 de jan. de 2008
Respostas 5
Participantes 4