Update não funciona

2 respostas
fvargas_tkd

Oi pessoal, bom dia. Estou tentando fazer um update no servlet funcionar, mas sempre acusa um erro ou outro, bom eu nãosei se estou montando de forma correta o servlet, então vou postar aqui e gostaria da opinião de voces no caso de estar algo errado, ou uma forma melhor de fazer:

import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.*;
import javax.servlet.http.*;

public class cliente_atualiza extends HttpServlet {

    private PreparedStatement ps_cliente;
    private ResultSet rs_cliente;
    private Connection conn_cliente;

    public void atualizar(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String sql = "";// usada para armazenar o sql de update no banco
        String cod_cliente = request.getParameter("cod_cliente");

          String nome = request.getParameter("nome");//1
        try {
            Class.forName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
            conn_cliente = DriverManager.getConnection("jdbc:mysql://localhost:3306/lojacel", "root", "123");

            sql =   "update lojacel.clientes set clientes.nome = ? where clientes.cod_cliente = ?;";
            ps_cliente = conn_cliente.prepareStatement(sql);
            ps_cliente.setString(1, nome);//1
            ps_cliente.setString(2, cod_cliente);//2
          
            ps_cliente.executeUpdate(sql);

            if (rs_cliente.next()) {
                cod_cliente = rs_cliente.getString("cod_cliente");
                nome = rs_cliente.getString("nome");
                response.setContentType("text/html");
                PrintWriter out = response.getWriter();
                out.println("<html>");
                out.println("<head>");
                out.println("<title> Atualizado </title>");
                out.println("</head>");
                out.println("<body>");
                out.println("<center>");
                out.println("Cliente <b>" + nome + "</b> Atualizado!");
                out.println("&lt;/center&gt;");
                out.println("&lt;/body&gt;");
                out.println("&lt;/html&gt;");

                if (!response.isCommitted()) {
                    RequestDispatcher dispatcher = request.getRequestDispatcher("/bemvindo.jsp");
                    request.setAttribute("cod_cliente", cod_cliente);
                    request.setAttribute("nome", nome);

                    System.out.println("Concluido, cliente encontrado!");
                    dispatcher.forward(request, response);
                } else {

                    getServletContext().getRequestDispatcher("/bemvindo.jsp").forward(request, response);
                   
                    request.setAttribute("cod_cliente", cod_cliente);
                    request.setAttribute("nome", nome);
                    response.sendRedirect("consulta.jsp");
                    System.out.println("Concluido, cliente encontrado!");
                }

            } else {

                System.out.println("Erro, cliente não encontrado!");
                response.setContentType("text/html");
                PrintWriter out = response.getWriter();
                out.println("&lt;html&gt;");
                out.println("&lt;head&gt;");
                out.println("&lt;title&gt; Erro &lt;/title&gt;");
                out.println("&lt;/head&gt;");
                out.println("&lt;body&gt;");
                out.println("&lt;center&gt;");
                out.println("Cliente <b>" + nome + "</b> Inexistente!");
                out.println("&lt;/center&gt;");
                out.println("&lt;/body&gt;");
                out.println("&lt;/html&gt;");
            }

            rs_cliente.close();
            ps_cliente.close();
            conn_cliente.close();

        } catch (Exception e) {
            String erro = e.getMessage();
            System.out.println("Erro: " + e.toString());
            System.out.println("Erro: " + erro);
            response.setContentType("text/html");
                PrintWriter out = response.getWriter();
                out.println("&lt;html&gt;");
                out.println("&lt;head&gt;");
                out.println("&lt;title&gt; Erro &lt;/title&gt;");
                out.println("&lt;/head&gt;");
                out.println("&lt;body&gt;");
                out.println("&lt;center&gt;");
                out.println("Erro: <b>" + e + "</b> encontrado!");
                out.println("&lt;/center&gt;");
                out.println("&lt;/body&gt;");
                out.println("&lt;/html&gt;");
            e.printStackTrace();

        }

    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        atualizar(request, response);

    }
    // &lt;/editor-fold&gt;
}

Por último deu o seguinte erro:

Erro: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? where clientes.cod_cliente = ?' at line 1 encontrado

Pessoal, se puderem me ajudar, fico muito grato … não sei o que está errado ae.

2 Respostas

J

Você tem a exception lançada?

posta ai que facilita :roll:

flwww

fvargas_tkd

Opa, mostra assim:

Erro: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘? where clientes.cod_cliente = ?’ at line 1

O estranho é que se eu colocar esse código no mysql e claro, substituir ? por ‘teste’ e ? por ‘1’ ele funciona …

Criado 10 de fevereiro de 2009
Ultima resposta 10 de fev. de 2009
Respostas 2
Participantes 2