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("</center>");
out.println("</body>");
out.println("</html>");
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("<html>");
out.println("<head>");
out.println("<title> Erro </title>");
out.println("</head>");
out.println("<body>");
out.println("<center>");
out.println("Cliente <b>" + nome + "</b> Inexistente!");
out.println("</center>");
out.println("</body>");
out.println("</html>");
}
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("<html>");
out.println("<head>");
out.println("<title> Erro </title>");
out.println("</head>");
out.println("<body>");
out.println("<center>");
out.println("Erro: <b>" + e + "</b> encontrado!");
out.println("</center>");
out.println("</body>");
out.println("</html>");
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);
}
// </editor-fold>
}
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.