1
resposta

Update não atualiza registro

Estou com dificuldade para atualizar meu registro no banco de dados, ele não mostra nenhum erro, me retorna true, porém não atualiza. Segue o código

package br.com.agendaContato.servlets;

import java.io.IOException;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import br.com.agendaContato.bd.conexao.Conexao;
import br.com.agendaContato.jdbc.JDBCContatoDAO;
import br.com.agendaContato.objetos.Contato;
import com.google.gson.Gson;

public class updateContato extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public updateContato(){
        super();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        proccess(request, response);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        proccess(request, response);
    }

    private void proccess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

        Contato contato = new Contato();

        try{

            contato.setNome(request.getParameter("nomeEdit"));
            contato.setEndereco(request.getParameter("enderecoEdit"));
            contato.setTelefone(request.getParameter("telefoneEdit"));

            Conexao conec = new Conexao();
            Connection conexao = conec.abrirConexao();

            JDBCContatoDAO jdbcContatoDao = new JDBCContatoDAO(conexao);
            boolean retorno = jdbcContatoDao.updateContato(contato);

            conec.fecharConexao();

            // Para retornar uma mensagem para o usuario
            Map<String, String> msg = new HashMap<String, String>();
            if(retorno){
                msg.put("msg","Ok.");
            }else{
                msg.put("msg","Not.");
            }
            /*
             * Retorna a resposta(mensagem) para o usuário a partir do Json
             */
            String json = new Gson().toJson(msg);

            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write(json);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
    public boolean updateContato(Contato contato){
        String comando = "update contato set nome=?, endereco=?, telefone=? where idcontato = ?";
        PreparedStatement p;

        try{

            p = this.conexao.prepareStatement(comando);
            p.setString(1,  contato.getNome());
            p.setString(2,  contato.getEndereco());
            p.setString(3, contato.getTelefone());
            p.setInt(4, contato.getId());
            p.execute();

        }catch(Exception e){
            e.printStackTrace();

            return false;
        }

        return true;
    }
1 resposta

Pelo que eu entendi, voce não esta passando o ID para o objeto contato, e esta solicitando esse valor na hora de montar o seu sql, assim ele não esta encontrando nenhuma linha para alterar , ou algo do genero.

contato.setNome(request.getParameter("nomeEdit"));
 contato.setEndereco(request.getParameter("enderecoEdit"));
 contato.setTelefone(request.getParameter("telefoneEdit"));
"update contato set nome=?, endereco=?, telefone=? where idcontato = ?"