Erro JSP

2 respostas
P

Boa noite!

Eu estou enfrentando o seguinte problema:

Eu quero listar os dados de um questionário em uma página JSP. Pra isso, eu estou usando o método getString da classe ResultSet. O código da classe DAO é o seguinte:

public ResultSet obterQuestoes(String questionario) {
        ResultSet resultado = null;
        Statement stmt = null;
        String sSQL = "";

        try {
            conectarBD();

            sSQL = "SELECT a.titulo, b.enunciado, c.peso FROM questionario a, questao b, ";
            sSQL = sSQL + "questionario_questao c WHERE a.id = c.questionario_id ";
            sSQL = sSQL + "AND b.id = c.questao_id AND a.id = ";
            sSQL = sSQL + questionario;

            stmt = CONEXAO.createStatement();
            resultado = stmt.executeQuery(sSQL);

            return resultado;
        } catch (SQLException e) {
            System.out.println(e.getStackTrace());
        }
       return null;
    }
E esse é a página JSP de onde eu quero listar os dados:
<%
<%
    QuestionarioDAO qDAO = new QuestionarioDAO();
    String[] questionarios;
    questionarios = request.getParameterValues("chk_escolha");

    if (questionarios != null) {
        for (int i = 0; i < questionarios.length; i++)
        {
            ResultSet resultado = qDAO.obterQuestoes(questionarios[i]);
            out.println(resultado.getString(1));
            resultado.close();
            resultado = null;
        }
    }
%>
%>
E esse é o erro que aparece quando tento listar os dados:
org.apache.jasper.JasperException: Exception in JSP: /visualizar_exportar_questionario.jsp:20

17:         {
18:             ResultSet resultado = qDAO.obterQuestoes(questionarios[i]);
19:             //out.println("<h3> Nome do question&aacute;rio: "+resultado.getString(0)+"</h3><br>");
20:             out.println(resultado.getString(1));
21:             resultado.close();
22:             resultado = null;
23:         }


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

root cause

javax.servlet.ServletException
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
	org.apache.jsp.visualizar_005fexportar_005fquestionario_jsp._jspService(visualizar_005fexportar_005fquestionario_jsp.java:79)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

root cause

java.sql.SQLException
	com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
	com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
	com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:815)
	com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5528)
	com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5448)
	org.apache.jsp.visualizar_005fexportar_005fquestionario_jsp._jspService(visualizar_005fexportar_005fquestionario_jsp.java:65)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

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

Os dados estão sendo sendo passados corretamente para a página.

Espero que alguém possa me ajudar.

Abraços.

2 Respostas

C

Está dando erro no seu SQL.

L

Olá amigo,

como dito acima o erro é no seu SQL, provavelmente esse campo id da tabela questionario é do tipo Integer, e vc está comparando ele com uma String, a forma correta de fazer seria:

sSQL.append(“AND b.id = c.questao_id AND a.id = ?”);

stmt.setInteger(“0”, Integer.valueOf(questionario));

Para seu código ficar mais legível utilize StringBuffer, ao invés de String, e utilize o método append para concatenar a consulta SQL, depois no método execute converta para String com o método toString();

Espero ter ajudado.

Criado 14 de novembro de 2009
Ultima resposta 9 de dez. de 2009
Respostas 2
Participantes 3