Página de alteração de dados não funciona - JSP

1 resposta Resolvido
jsp
A

Salve galera, a solução deve ser bem simples, mas não estou encontrando se puderem ajudar agradeço.

Estou seguindo um livro para aprender JSP e aparentemente tem algo errado na explicação e no código dele. Basicamente é um sistema simples de cadastro de clientes e estou com problema na alteração de dados dos clientes já cadastrados. Nenhum erro é exibido, o que acontece é que depois de fazer as alterações de qualquer dado e clicar no botão Alterar vc é redirecionado para página principal, mas nenhuma alteração é efetuada na base de dados.
Pelos testes que fiz o problema esta neste trecho:

+ "WHERE codigo=" + request.getParameter("codigoAlterar");

Provavelmente não está retornando o código correto para efetua a alteração no BD.

Seguem parte do código:
clientes.jsp:

} else if (acao.equals(alterar)) {

String sql = "UPDATE cliente SET "

+ nome=’” + request.getParameter(nome).toUpperCase() + “’,”

+ endereco= + request.getParameter(endereco) + “,”

+ numero=’” + request.getParameter(numero) + “’,”

+ complemento=’” + request.getParameter(complemento) + “’,”

+ bairro= + request.getParameter(bairro) + “,”

+ cidade= + request.getParameter(cidade) + “,”

+ estado= + request.getParameter(estado) + “,”

+ rg=’” + request.getParameter(rg) + “’,”

+ cpf=’” + request.getParameter(cpf) + “’,”

+ telfixo=’” + request.getParameter(telfixo) + “’,”

+ telcel=’” + request.getParameter(telcel) + “’,”

+ email=’” + request.getParameter(email) + “’,”

+ sexo=’” + request.getParameter(sexo) + “’,”

+ datanasc=’” + request.getParameter(datanasc) + “’,”

+ datacad=’” + request.getParameter(datacad) + “’,”

+ obs=’” + request.getParameter(obs).trim() + “’”

+ WHERE codigo= + request.getParameter(codigoAlterar);

instrucao.executeUpdate(sql);

clientesAlterar.jsp:

int endereco, bairro, cidade, estado;
    String codigo, nome, numero, complemento, rg, cpf, telfixo, telcel, email, sexo, obs;
%>

<!DOCTYPE html>

<%
    try {
        Class.forName("org.postgresql.Driver");     //Inform which driver load
        conexao = DriverManager.getConnection("jdbc:postgresql://localhost/sisWebJee?user=agt&password=123&ssl=false");     //Path to connect with DB
        instrucao = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);      //Initialize object to send SQL's code

        codigo = request.getParameter("codigo");
        if (codigo == null) {
            codigo = "0";
        }
        resultado = instrucao.executeQuery("SELECT * FROM cliente WHERE codigo=" + codigo);
        if (resultado.next()) {
            nome = resultado.getString("nome");
            endereco = resultado.getInt("endereco");
            numero = resultado.getString("numero");
            complemento = resultado.getString("complemento");
            bairro = resultado.getInt("bairro");
            cidade = resultado.getInt("cidade");
            estado = resultado.getInt("estado");
            rg = resultado.getString("rg");
            cpf = resultado.getString("cpf");
            telfixo = resultado.getString("telfixo");
            telcel = resultado.getString("telcel");
            email = resultado.getString("email");
            sexo = resultado.getString("sexo");
            datanasc = resultado.getDate("datanasc");
            datacad = resultado.getDate("datacad");
            obs = resultado.getString("obs");
        
%>

<html>
    <head>
        <script language="javascript" src="util/funcoes.js"></script>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Cadastro de Clientes</title>
    </head>
    <body>

        <h1 align="center">Sistema de Cadastro de Clientes</h1><br>
        <h2 align="center">
            <font style="color: dodgerblue">Alterar Cadastro de Cliente</font>
        </h2>

        <form name="formCadastrar" method="post" action="clientes.jsp?acao=alterar">
            <p>
                Código:
                <input type="text" name="codigoAlterar" value="<%= codigo%>" disabled="true" />

Fiz testes colocando o número manualmente no código de clientes.jsp, retirando request.getParameter, e a alteração funciona perfeitamente:

+ "WHERE codigo=1"

Testei utilizando como request.getParameter(“codigo”), não funcionou.
Como trazer o código certo automaticamente, na verdade não existe nenhum codigoAlterar na página clientesAlterar.jsp ainda assim o livro diz para usar este parâmetro.

1 Resposta

A
Solucao aceita

Fiz alguns teste e cheguei uma solução que estava funcionando, mas não sei porque parou de funcionar.

Consegui resolver novamente com uma nova solução, funcionando até o momento.
Adicionei o seguinte código.
clientesAlterar.jsp:

<form name="formCadastrar" method="post" action="clientes.jsp?acao=alterar">
        <p>
            Código:
            <input type="text" name="codigo" value="<%= codigo%>" disabled="true" />-
            <input type="hidden" name="codigoAlterar" value="<%= codigo%>" />

Dessa forma o request.getParameter na instrução SQL para UPDATE na página clientes.jsp passou a funcionar, retornando qual item da tabela deveria ser atualizado :

“WHERE codigo=” + request.getParameter(“codigoAlterar”);

Criado 21 de outubro de 2020
Ultima resposta 23 de out. de 2020
Respostas 1
Participantes 1