Erro ao salvar data no banco de dados

2 respostas
programaçãojsperrorjavadata
L

Olá galera. Estou tentando desenvolver uma aplicação em Java Web, JSP. Ao tentar salvar uma pessoa no banco de dados PostgreSQL dá o seguinte erro:

Informações:   Conectado com sucesso.

Informações:   Erro na DAO ao adicionar Pessoa. Erro: ERROR: syntax error at or near "datanasc_pessoa"

Posição: 89

Grave:   org.postgresql.util.PSQLException: ERROR: syntax error at or near "datanasc_pessoa"

Posição: 89

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2310)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2023)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:217)

at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:421)

at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:166)

at org.postgresql.jdbc.PgPreparedStatement.execute(PgPreparedStatement.java:159)

at br.com.sge.DAO.PessoaDAOImpl.adicionar(PessoaDAOImpl.java:53)

at br.com.sge.control.AdicionarPessoa.processRequest(AdicionarPessoa.java:73)

at br.com.sge.control.AdicionarPessoa.doPost(AdicionarPessoa.java:121)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)

at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)

at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)

at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)

at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)

at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)

at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)

at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)

at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)

at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)

at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)

at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)

at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)

at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)

at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)

at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)

at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)

at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)

at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)

at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)

at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)

at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)

at java.lang.Thread.run(Thread.java:745)

Informações:   Conectado com sucesso.

Informações:   Conectado com sucesso.

Informações:   Conectado com sucesso.

Minha Classe MODELO de Pessoa

public class Pessoa {

private int idPessoa;
private TipoPessoa tipoPessoa;
private String cnpPessoa;
private String nomePessoa;
private String nomeRedPessoa;
private Genero generoPessoa;
private Date dataNascPessoa;
private String observacaoPessoa;
private Status statusPessoa;

public Pessoa() {
}

public Pessoa(int idPessoa, TipoPessoa tipoPessoa, String cnpPessoa, String nomePessoa, String nomeRedPessoa, Genero generoPessoa, Date dataNascPessoa, String observacaoPessoa, Status statusPessoa) {
    this.idPessoa = idPessoa;
    this.tipoPessoa = tipoPessoa;
    this.cnpPessoa = cnpPessoa;
    this.nomePessoa = nomePessoa;
    this.nomeRedPessoa = nomeRedPessoa;
    this.generoPessoa = generoPessoa;
    this.dataNascPessoa = dataNascPessoa;
    this.observacaoPessoa = observacaoPessoa;
    this.statusPessoa = statusPessoa;
}

Gets e Sets…

Minha DAO de Pessoa

public class PessoaDAOImpl implements GenericDAO{

private Connection conexao;

public PessoaDAOImpl() throws Exception {
    try {
        this.conexao = ConnectionFactory.getConnection();
        System.out.println("Conectado com sucesso.");
    } catch (Exception ex) {
        throw new Exception(ex.getMessage());
    }
}

@Override
public boolean adicionar(Object object) {
    Pessoa pessoa = (Pessoa) object;
    PreparedStatement pstm = null;
    String sql = "INSERT INTO pessoa (tipo_pessoa, cnp_pessoa, nome_pessoa, nomered_pessoa, genero_pessoa "
            + "datanasc_pessoa, observacao_pessoa, status_pessoa) VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
    try {
        pstm = conexao.prepareStatement(sql);
        pstm.setInt(1, pessoa.getTipoPessoa().getIdTipoPessoa());
        pstm.setString(2, pessoa.getCnpPessoa());
        pstm.setString(3, pessoa.getNomePessoa());
        pstm.setString(4, pessoa.getNomeRedPessoa());
        pstm.setInt(5, pessoa.getGeneroPessoa().getIdGenero());
        pstm.setDate(6, new java.sql.Date(pessoa.getDataNascPessoa().getTime()));
        pstm.setString(7, pessoa.getObservacaoPessoa());
        pstm.setInt(8, pessoa.getStatusPessoa().getIdStatus());
        pstm.execute();
        return true;
    } catch (SQLException ex) {
        System.out.println("Erro na DAO ao adicionar Pessoa. Erro: " + ex.getMessage());
        ex.printStackTrace();
        return false;
    } finally {
        try {
            ConnectionFactory.closeConnection(conexao, pstm);
        } catch (Exception ex) {
            System.out.println("Erro ao fechar os parametros de conexao. Erro: " + ex.getMessage());
            ex.printStackTrace();
        }
    }
}

Minha SERVLET que adiciona a pessoa

public class AdicionarPessoa extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String mensagemSalvar = null;

String cnpPessoa = request.getParameter(cnpPessoa);

String nomePessoa = request.getParameter(nomePessoa);

String nomeRedPessoa = request.getParameter(nomeRedPessoa);

Integer idTipoPessoa = Integer.parseInt(request.getParameter(tipoPessoa));

Date dataNascPessoa = Conversoes.converterData(request.getParameter(dataNascPessoa).replace("-", /));

Integer idGenero = Integer.parseInt(request.getParameter(generoPessoa));

String observacaoPessoa = request.getParameter(observacaoPessoa);

Integer idStatus = Integer.parseInt(request.getParameter(statusPessoa));

if (cnpPessoa.isEmpty() || “”.equals(cnpPessoa)) {

response.sendRedirect(DadosInserirPessoa?status=erroValidacao);

} else if (nomePessoa.isEmpty() || “”.equals(nomePessoa)) {

response.sendRedirect(DadosInserirPessoa?status=erroValidacao);

} else if (nomeRedPessoa.isEmpty() || “”.equals(nomeRedPessoa)) {

response.sendRedirect(DadosInserirPessoa?status=erroValidacao);

} else {

Pessoa pessoa = new Pessoa();

pessoa.setCnpPessoa(cnpPessoa);

pessoa.setNomePessoa(nomePessoa);

pessoa.setNomeRedPessoa(nomeRedPessoa);

TipoPessoa tipopessoa = new TipoPessoa();

tipopessoa.setIdTipoPessoa(idTipoPessoa);

pessoa.setTipoPessoa(tipopessoa);

pessoa.setDataNascPessoa(dataNascPessoa);

Genero genero = new Genero();

genero.setIdGenero(idGenero);

pessoa.setGeneroPessoa(genero);

pessoa.setObservacaoPessoa(observacaoPessoa);

Status status = new Status();

status.setIdStatus(idStatus);

pessoa.setStatusPessoa(status);

try {

GenericDAO dao = new PessoaDAOImpl();

if (dao.adicionar(pessoa)) {

mensagemSalvar = "
"
+ "×<h4 "
+ “class=‘alert-heading’>Sucesso!”
+ "Parabéns, o registro foi adicionado com sucesso, "
+ “e já se encontra disponível para consulta.
”;
} else {
mensagemSalvar = "
"
+ "×<h4 "
+ “class=‘alert-heading’>Erro!”
+ “Opps, algo deu errado ao tentar adicionar o registro.”
+ “Tente novamente ou contate o administrador do sistema.
”;
}
request.setAttribute(“mensagemSalvar”, mensagemSalvar);
request.getRequestDispatcher(“DadosAdicionarPessoa”).forward(request, response);
} catch (Exception ex) {
System.out.println("Erro na servlet ao adicionar Pessoa. Erro: " + ex.getMessage());
ex.printStackTrace();
}
}
}
}

Minha Classe que converte a Data - Conversoes.java

public class Conversoes {

public static Date converterData(String data) {

    try {
        if (data != null || !data.trim().equals("")) {
            DateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
            Date date = fmt.parse(data);
            return date;
        } else {
            return null;
        }
    } catch (Exception ex) {
        System.out.println("Erro ao converter Data! Erro: " + ex.getMessage());
        ex.printStackTrace();
        return null;
    }
}

}

O que estou fazendo de errado galera? Me ajudem por favor.

2 Respostas

J
String sql = "INSERT INTO pessoa (tipo_pessoa, cnp_pessoa, nome_pessoa, nomered_pessoa, genero_pessoa " <<
        + "datanasc_pessoa, observacao_pessoa, status_pessoa) VALUES (?, ?, ?, ?, ?, ?, ?, ?);";

esqueceu o virgula

String sql = "INSERT INTO pessoa (tipo_pessoa, cnp_pessoa, nome_pessoa, nomered_pessoa, genero_pessoa " 
        + ", datanasc_pessoa, observacao_pessoa, status_pessoa) VALUES (?, ?, ?, ?, ?, ?, ?, ?);";  e salve engano você não precisa de ; no final de sua query.
L

Poxa jonathan.sky, nem acredito que era só isso, revirei esses códigos 10x kkkkk mas o importante que é que me ajudou a resolver. Muito obrigado.

Criado 27 de maio de 2017
Ultima resposta 28 de mai. de 2017
Respostas 2
Participantes 2