>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Erro ao tentar editar em Java


Estou com o seguinte problema... Seguindo a vídeo-aula de Java, mais precisamente em JSP e Servlets online (Java EE), na vídeo-aula 7 CRUD Final Chamados (atualizar, editar, exibir) - CRUD parte 2, ao clicar no botão, link [EDITAR] aparecendo a seguinte mensagem:

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 ? at line 1

Segue abaixo os meus código, copiados da vídeo-aula do Rafael...

String SQL = SELECT * FROM chamado WHERE id = ?;



8 Respostas


Olá Gustavo

Pode postar seu código?





public class EditarChamadoServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse res) throws ServletException, IOException {
PrintWriter out = res.getWriter();
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/chamados", "root", "");

String SQL = "SELECT * FROM chamado WHERE id = ?";

PreparedStatement pstm = conn.prepareStatement(SQL);
pstm.setInt(1, Integer.parseInt(request.getParameter("id")));

ResultSet rs = pstm.executeQuery(SQL);

if (rs.next()){
out.println("");
out.println("");
out.println("Editar Chamdos");
out.println("");
out.println("");
out.println("");
out.println("

Preencha as informações do chamado

");
out.println("
");
out.println("
");
out.println("ID do chamado:
");
out.println("
");
out.println("Título:
");
out.println("
");
out.println("Conteúdo:
");
out.println("
");
out.println("");
out.println("
");
out.println("
");
out.println("Listar Chamado");
out.println("Sair");
out.println("");
out.println("");
}

pstm.close();
conn.close();

} catch (SQLException e) {
out.println("Problema no banco de dados " e.getMessage());
} catch (ClassNotFoundException ex){
out.println("Problema ao carregar driver de conexão");
}
}




Olá

A tabela é chamado ou chamados?

E no pstm.executeQuery(SQL);

Você não pode rodar direto o SQL, precisa passar ali o teu Prepared Statement. Peço que reveja esta aula novamente.




O nome do banco é chamados
E o nome da tabela é chamado.





String SQL = "SELECT * FROM chamado WHERE id = ?";

PreparedStatement pstm = conn.prepareStatement(SQL);


Desculpe, não entendi. O SQL não está sendo passado direto, é está dentro do PreparedStatement...




Gustavo

Faça um teste, retire o parâmetro em baixo e o ?

Veja o que acontece




Desculpe, não entendi.
Me dê um exemplo de o que você está sugerindo.




Olá

Mude isso:


String SQL = "SELECT * FROM chamado WHERE id = ?";

PreparedStatement pstm = conn.prepareStatement(SQL);
pstm.setInt(1, Integer.parseInt(request.getParameter("id")));



Para:


String SQL = "SELECT * FROM chamado";

PreparedStatement pstm = conn.prepareStatement(SQL);



Veja o que acontece?