Erro no Servlet

9 respostas
M

Ae pessoal, estou com um problema em um dos meus SERVLET's

Erro:
Problema ao cadastrar Usuário. Erro:ERROR: syntax error at or near "$2"
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$2"
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1608)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1343)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:194)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:343)
        at br.com.promayor.DAO.UsuarioDAOImp.cadastrar(UsuarioDAOImp.java:58)
        at br.com.promayor.controller.CadastrarUsuario.processRequest(CadastrarUsuario.java:71)
        at br.com.promayor.controller.CadastrarUsuario.doPost(CadastrarUsuario.java:109)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)
Servlet CadastarUsuario
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.promayor.controller;

import br.com.promayor.DAO.UsuarioDAO;
import br.com.promayor.DAO.UsuarioDAOImp;
import br.com.promayor.model.Usuario;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Etec Fernandópolis
 */
public class CadastrarUsuario extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        String nome_usuario=request.getParameter("nome_usuario");
        String sobrenome_usuario=request.getParameter("sobrenome_usuario");
        String endereco_usuario=request.getParameter("endereco_usuario");
        int numero_usuario=Integer.parseInt(request.getParameter("numero_usuario"));
        String bairro_usuario=request.getParameter("bairro_usuario");
        String cidade_usuario=request.getParameter("cidade_usuario");
        String cep_usuario=request.getParameter("cep_usuario");
        String estado_usuario=request.getParameter("estado_usuario");
        int telefone_usuario=Integer.parseInt(request.getParameter("telefone_usuario"));
        int telefone2_usuario=Integer.parseInt(request.getParameter("telefone2_usuario"));
        String email_usuario=request.getParameter("email_usuario");
        String cpf_usuario=request.getParameter("cpf_usuario");
        String rg_usuario=request.getParameter("rg_usuario");
        String login_usuario=request.getParameter("login_usuario");
        String senha_usuario=request.getParameter("senha_usuario");

        Usuario usuario= new Usuario();
        usuario.setNome_usuario(nome_usuario);
        usuario.setSobrenome_usuario(sobrenome_usuario);
        usuario.setEndereco_usuario(endereco_usuario);
        usuario.setNumero_usuario(numero_usuario);
        usuario.setBairro_usuario(bairro_usuario);
        usuario.setCidade_usuario(cidade_usuario);
        usuario.setCep_usuario(cep_usuario);
        usuario.setEstado_usuario(estado_usuario);
        usuario.setTelefone_usuario(telefone_usuario);
        usuario.setTelefone2_usuario(telefone2_usuario);
        usuario.setCpf_usuario(cpf_usuario);
        usuario.setRg_usuario(rg_usuario);
        usuario.setEmail_usuario(email_usuario);
        usuario.setLogin_usuario(login_usuario);
        usuario.setSenha_usuario(senha_usuario);

        String mensagem = "";

        try{
            UsuarioDAO usuarioDAO=new UsuarioDAOImp();
            usuarioDAO.cadastrar(usuario);
            mensagem = "<script>window.alert('Usuário Cadastrado com Sucesso.')</script>";
            request.setAttribute("mensagem", mensagem);
            request.getRequestDispatcher("cadastrarusuario.jsp").forward(request, response);
        }
        catch(Exception e){
            System.out.println("Problemas ao obter a Instancia pelo Servlet ou ao Invocar o " +
                    "metodo Cadastrar Usuario. "+ e.getMessage());
            e.printStackTrace();
            throw new ServletException(e);

        }
    }

    // <editor-fold defaultstate="collapsed" desc="Métodos HttpServlet. Clique no sinal de + à esquerda para editar o código.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
Classe UsuarioDAOImp
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.promayor.DAO;

import br.com.promayor.model.Usuario;
import br.com.promayor.util.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;


/**
 *
 * @author Etec Fernandópolis
 */
public class UsuarioDAOImp implements UsuarioDAO {
private Connection conn;

public UsuarioDAOImp() throws Exception{
try{
    this.conn=ConnectionFactory.getConnection();
    System.out.println("Conectado com Sucesso.");
    }
catch(Exception e){
throw new Exception("Problemas ao Conectar com o Banco. Erro: "+e.getMessage() );
}
}

    public void cadastrar(Usuario usuario) {
        PreparedStatement stmt=null;
        try{
            String sql = "INSERT INTO usuario(nome_usuario, sobrenome_usuario, "+
            "endereco_usuario, numero_usuario, bairro_usuario, cidade_usuario, " +
            "cep_usuario, estado_usuario, telefone_usuario, telefone2_usuario, " +
            "cpf_usuario, rg_usuario, email_usuario, login_usuario, senha_usuario)" +
            " VALUES (???????????????)";

            stmt = conn.prepareStatement(sql);
            stmt.setString(1, usuario.getNome_usuario());
            stmt.setString(2, usuario.getSobrenome_usuario());
            stmt.setString(3, usuario.getEndereco_usuario());
            stmt.setInt(4, usuario.getNumero_usuario());
            stmt.setString(5,usuario.getBairro_usuario());
            stmt.setString(6,usuario.getCidade_usuario());
            stmt.setString(7,usuario.getCep_usuario());
            stmt.setString(8,usuario.getEstado_usuario());
            stmt.setInt(9,usuario.getTelefone_usuario());
            stmt.setInt(10,usuario.getTelefone2_usuario());
            stmt.setString(11, usuario.getCpf_usuario());
            stmt.setString(12,usuario.getRg_usuario());
            stmt.setString(13,usuario.getEmail_usuario());
            stmt.setString(14, usuario.getLogin_usuario());
            stmt.setString(15, usuario.getSenha_usuario());

            stmt.execute();
            System.out.println("Professor cadastrado com sucesso ");
        }
        catch(SQLException sqle){
         System.out.println("Problema ao cadastrar Usuário. Erro:" + sqle.getMessage());
         sqle.printStackTrace();
        }
        finally{
            try{
                stmt.close();
            }
            catch(SQLException e){
                System.out.println("Problemas ao fechar  o statement! Erro "+ e.getMessage());
            }

        }
    }
   
}

Quem souber responde aí !
VLW

9 Respostas

J-Chist

Tem que ter vírgula entre os elementos de bind.

" VALUES (???????????????)";
M

Opaa deu certo … só q tá dano outro erro agora

Erro

Problema ao cadastrar Usuário. Erro:O índice da coluna está fora do intervalo: 15, número de colunas: 14. org.postgresql.util.PSQLException: O índice da coluna está fora do intervalo: 15, número de colunas: 14. at org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:52) at org.postgresql.core.v3.SimpleParameterList.setStringParameter(SimpleParameterList.java:117) at org.postgresql.jdbc2.AbstractJdbc2Statement.bindString(AbstractJdbc2Statement.java:2117) at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1238) at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1224) at br.com.promayor.DAO.UsuarioDAOImp.cadastrar(UsuarioDAOImp.java:56) at br.com.promayor.controller.CadastrarUsuario.processRequest(CadastrarUsuario.java:71) at br.com.promayor.controller.CadastrarUsuario.doPost(CadastrarUsuario.java:109) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)

J-Chist

Leia o erro e tente entendê-lo. Ele te diz exatamente que problema está acontecendo e nesse caso específico diz também como corrigir. Depois que compreender o erro, se não consguir resolvê-lo você posta novamente aqui.

M

o galera valeu ate mais !!falow :lol:

J-Chist

Conseguiu resolver?

phmjunior

o erro está na escrita sql do teu insert da uma olhada, pois vc não pode escrever o nome da tabela colado com os campos da mesma.

de: Insert into usuario(
para: insert into usuario (

J-Chist

phmjunior:
o erro está na escrita sql do teu insert da uma olhada, pois vc não pode escrever o nome da tabela colado com os campos da mesma.

de: Insert into usuario(
para: insert into usuario (

O motivo do erro não é esse. Não há problema em suprimir o espaço entre o nome da tabela na cláusula INSERT INTO e o “(”.
Daria erro se truncasse o “)” com VALUES, por exemplo, como em INSERT INTO MY_TABLE(campo1, campo2[color=red])VALUES[/color].

phmjunior

cara fala isso pro Oracle

J-Chist

phmjunior:

cara fala isso pro Oracle

Eu uso Oracle. Aqui não dá problema nenhum, não sei em outra versão específica. Agora, pela própria sintaxe da cláusula não há motivo para o referido espaço causar problemas. Mas claro, o comando fica até mais legível se você o coloca lá.

Criado 20 de outubro de 2009
Ultima resposta 21 de out. de 2009
Respostas 9
Participantes 3