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.