5
respostas

Olá, meu update não está atualizando

Olá, meu update não está atualizando, quando executo a query vem da seguinte maneira:

update contato set nome=?, endereco=?, telefone=? where idcontato = 6

o que eu posso por nos interrogações? Para inserir coloquei eles, porém com upd não está dando certo. Segue o código

    public Contato updateContato(int id){
        String comando = "update contato set nome=?, endereco=?, telefone=? where idcontato = " +id;
        PreparedStatement p;

        Contato contato = new Contato();
        try{
            java.sql.Statement stmt = conexao.createStatement();
            ResultSet rs = stmt.executeQuery(comando);


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

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

        return contato;
    }

Att

5 respostas

Oi Maria, tudo bem ?

O que está acontecendo é que você está mandando executar o seu sql e repare que ele não tem nada, pois você está criando uma instancia de contato, que vem vazia.

O correto seria você receber o contato já gerenciado pelo banco via parâmetro :

public void updateContato(Contato contato){
        String comando = "update contato set nome=?, endereco=?, telefone=? where idcontato = ?"; 
        PreparedStatement p;

        try{
            java.sql.Statement stmt = conexao.createStatement();


            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();
        }
    }

Espero ter ajudado.

Abraços

E meu código da Servlet, está correto? Porque ele continua não atualizando.

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

        Contato contato = new Contato();

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

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

        String json = new Gson().toJson(contato);
        response.setContentType("applicaiton/json");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(json);
    }

Não está certo :(

Você não pode criar um aluno e tentar editar, pois ele sequer existe, não tem dados.

Acredito que você devia pegar o contato via parametro que deve estar vindo na requisição, pois assim você poderia o atualizar.

Ajustei porém não atualiza ainda kkk, saca só

    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);
            jdbcContatoDao.updateContato(contato);

            conec.fecharConexao();

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

Os parametros são meus inputs.

Seu contato não tem id, por isso não sendo editado.