Dúvida com JSP e Servlets Correção

3 respostas
A

Olá, Pessoal.
Alguém poderia corrigir essas duas classes, por favor, pois não estou conseguindo identificar o erro e não sei se a minha lógica esta correta. Pois ao fazer a pesquisa por nome é apresentada a seguinte mensagem.
Erro: Java. lang.NumberFormatException: for input string e na pesquisa pelo RA não traz nada.

package br.com.mcsjava.model;

import java.sql.*;
import java.util.*;

public class AlunoDAO {
    private Connection con = null;

public AlunoDAO() {
    FabricaConexao fab = new FabricaConexao();
    con = fab.abreConexao();

    if (con == null) System.out.println("Erro ao conectar!");
}

public boolean gerencia(AlunoTO dados, int oper){
   try{
        String comando = null;

        if (oper == 1) comando = "INSERT INTO TbAluno (Nome, Curso, RA) VALUES (?, ?, ?)";
        else if (oper == 2) comando = "UPDATE TbAluno SET Nome = ?, Curso = ? WHERE RA = ?";
        else if (oper == 3) comando = "DELETE FROM TbAluno WHERE RA = ?";

        PreparedStatement stm = con.prepareStatement(comando);

       if (oper == 3) stm.setInt(1, dados.getRa());
       else {
               stm.setString(1, dados.getNome());
               stm.setString(2, dados.getCurso());
               stm.setInt (3, dados.getRa());
       }
            return !stm.execute();
       }catch(SQLException erro){
            return false;
    }
}

public boolean gerenciaConsulta(AlunoTO dados, int oper) throws SQLException{
     try{
         String comando = null;

          if (oper == 1) comando = "SELECT * FROM TbAluno WHERE RA = ?";
          else if (oper == 2) comando = "SELECT * FROM TbAluno WHERE NOME LIKE ?";

          PreparedStatement stm = con.prepareStatement(comando);
          ResultSet resultado = stm.executeQuery();

          if (oper == 1){
             stm.setInt(1, dados.getRa());

              if (resultado.next()){
                   dados.setNome (resultado.getString("Nome"));
                   dados.setCurso(resultado.getString("Curso"));
                   return true;
              }else return false;
          }else{
                stm.setString(1, dados.getNome());
                stm.setString(2, dados.getCurso());
                stm.setInt (3, dados.getRa());
                 if (resultado.next()){
                      dados.setNome (resultado.getString("Nome"));
                      dados.setCurso(resultado.getString("Curso"));
                      return true;
                }else return false;
           }
      }catch(SQLException erro){
            return false;
      }
   }
}
----------------------------------------------------------------------------------------------------------------------------------
package br.com.mcsjava.servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import br.com.mcsjava.model.*;

public class AlunoServlet extends HttpServlet {

      protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      PrintWriter out = response.getWriter();
      String mensagem = "";
      try {
              AlunoTO aluno = new AlunoTO();
              aluno.setRa(Integer.parseInt(request.getParameter( "txt_ra")));
              aluno.setNome(request.getParameter("txt_nome"));
              aluno.setCurso(request.getParameter("txt_curso"));
              int operacao = Integer.parseInt(request.getParameter("operacao")) ;

              AlunoDAO comando = new AlunoDAO();

              if(operacao != 4){
                     boolean sucesso = comando.gerencia(aluno, operacao);
                     if(sucesso) mensagem = "<font color = '#006699'>Operação OK!</font>";
                     else mensagem = "<font color = '#FF0000'>Erro na Operação</font>";
              } else{
                     boolean sucesso = comando.gerenciaConsulta(aluno, operacao);

                 if(aluno == null) mensagem = "<font color = '#FF0000'>Aluno Inexistente!</font>";
                 else{
                       RequestDispatcher rd = request.getRequestDispatcher("CadastroAluno.jsp");
                       request.setAttribute("dados", aluno);
                       rd.forward(request, response);
                 }
            }
      } catch(Exception erro) {
            mensagem = "<font color = '#FF0000'>Erro: " +erro+ "</font>";
      } finally{
             out.println("<br><center><h1>" +mensagem+ "</h1></center>");
             out.println("<script>setTimeout('history.back()',3 000);</script>");
      } 
   }
}

3 Respostas

allancmm

Amigo, vc poderia identar seu código para melhorar a visualização. Outra coisa, pq vc declara em gerenciaConsulta SQLException se todo o código do método está dentro de um try que possui um catch(SQLException)?

jeroqueiroz

Cara,

Não verifiquei seu código, mas este tipo de erro é algo com tipos do java onde esta setando um valor number em um campo string. Tipo qto setamos um INT sem utilizar o .toString().

Verifiquei para ver se não esta acontecendo algo do tipo.

Master.Abs
Erro: Java. lang.NumberFormatException: for input string...

Essa exception é acionada ao adicionar um caracter que não seja numero.
Provavelmento no RA vc esteja adicionando algum caracter que não seja Number.

Criado 3 de janeiro de 2011
Ultima resposta 3 de jan. de 2011
Respostas 3
Participantes 4