>

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.



da aula 6 do curso: Java EE - JSP e Servlets


Boa Tarde, não consegui resolver esta mensagem de erro, da aula 6 do curso: Java EE - JSP e Servlets, o erro que dá é este: Problema no banco de dados: 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



17 Respostas


Olá

Seria um ERRO de SQL.

Poste seu código aqui.




Olá RAfael, segue o código:

try{
Class.forName("com.mysql.jdbc.Driver");

String SQL = "INSERT INTO chamados (titulo, conteudo) VALUES (?, ?)";

try{
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/chamados_rlsystem", "root", "");
PreparedStatement pstm = conn.prepareStatement(SQL);


pstm.setString(1, vtitulo);
pstm.setString(2, vconteudo);
// pstm.setString(3, SQL);


pstm.execute(SQL);
pstm.close();
conn.close();
} catch (SQLException e){
out.println("Problema no banco de dados: " e.getMessage());
}


}catch (ClassNotFoundException ex){
out.println("Problema ao carregar o driver de conexão!");
}
}




Olá

O erro continua?

Como está sua tabela no MySQL, me mostra um print dela, com os nomes dos campos e seus tipos.






Rafael ja tentei de tudo para rodar no navegador mais não roda...


HELP...








Ai quando vou rodar não roda...tambem tenho duvido por qual motivo a sessão esta "0" não deveria estar "1"?




Luy,

O erro ainda continua?




cara Rafael estou com um erro tambem e no usuario a mensagem e a seguinte.
Problema no banco de dados:Access denied for user 'root'@'localhost' (using password: YES)

PrintWriter out = response.getWriter();
String titulo = request.getParameter("txtTitulo");
String conteudo = request.getParameter("txtConteudo");

if (titulo.trim().length() < 4 ){
out.println("Preencha o campo titulo");

}else if(conteudo.trim().length() < 4 ){
out.println("Preencha o campo conteudo");
}else{
try {
Class.forName("com.mysql.jdbc.Driver");

//String sql = "INSERT INTO chamados (titulos,conteudo) VALUES(";
//sql =" '" titulo " '" conteudo "')";
String SQL = "INSERT INTO chamados (titulo,conteudo) VALUES(? , ?)";

try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/chamados_rlsystem","root"," lucimaria");

PreparedStatement pstm = conn.prepareStatement(SQL);

pstm.setString(1, titulo);
pstm.setString(2, conteudo);

pstm.execute(SQL);

pstm.close();

conn.close();

} catch (SQLException e) {

out.println("Problema no banco de dados:" e.getMessage());
}

} catch (ClassNotFoundException e) {

out.println("Problema ao carregar o driver de conexão!");
}




Ricardo,

O problema é a senha, veja se ta certo a senha do MySQL;




Acho que a senha esta correta pois entro no command line com ela. agora apareceu o seguinte erro.

Problema no Banco de Dados: Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à sua versão do servidor MySQL para a sintaxe direita ao uso próximo '? ,?) 'Na linha 1




Ricardo,

Agora o problema é de comando SQL.

Tente este:

String SQL = "INSERT INTO chamados (titulo,conteudo) VALUES (?, ?)";




Rafael,

o comando SQL está igual a este que você postou.


PrintWriter out = response.getWriter();
String titulo = request.getParameter("txtTitulo");
String conteudo = request.getParameter("txtConteudo");

if (titulo.trim().length() < 4 ){
out.println("Preencha o campo titulo");

}else if(conteudo.trim().length() < 4 ){
out.println("Preencha o campo conteudo");
}else{
try {
Class.forName("com.mysql.jdbc.Driver");

//String sql = "INSERT INTO chamados (titulos,conteudo) VALUES(";
//sql =" '" titulo " '" conteudo "')";
String SQL = "INSERT INTO chamados (titulo,conteudo) VALUES(? , ?)";

try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/chamados_rlsystem","root"," lucimaria");

PreparedStatement pstm = conn.prepareStatement(SQL);

pstm.setString(1, titulo);
pstm.setString(2, conteudo);

pstm.execute(SQL);

pstm.close();

conn.close();

} catch (SQLException e) {

out.println("Problema no banco de dados:" e.getMessage());
}

} catch (ClassNotFoundException e) {

out.println("Problema ao carregar o driver de conexão!");
}




Rafael,

o comando SQL está igual a este que você postou.


PrintWriter out = response.getWriter();
String titulo = request.getParameter("txtTitulo");
String conteudo = request.getParameter("txtConteudo");

if (titulo.trim().length() < 4 ){
out.println("Preencha o campo titulo");

}else if(conteudo.trim().length() < 4 ){
out.println("Preencha o campo conteudo");
}else{
try {
Class.forName("com.mysql.jdbc.Driver");

//String sql = "INSERT INTO chamados (titulos,conteudo) VALUES(";
//sql =" '" titulo " '" conteudo "')";
String SQL = "INSERT INTO chamados (titulo,conteudo) VALUES(? , ?)";

try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/chamados_rlsystem","root"," lucimaria");

PreparedStatement pstm = conn.prepareStatement(SQL);

pstm.setString(1, titulo);
pstm.setString(2, conteudo);

pstm.execute(SQL);

pstm.close();

conn.close();

} catch (SQLException e) {

out.println("Problema no banco de dados:" e.getMessage());
}

} catch (ClassNotFoundException e) {

out.println("Problema ao carregar o driver de conexão!");
}




Ricado,

Não está, peço que mude,

A sua virgula está a "MAIS" e o VALUES está junto do parentese.






Rafael fiz de tudo e não deu certo copiei e colei seu código e nada, aparece o seguinte

Problema no banco de dados:Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

te aguardo, valeu.




Opa.

Mas agora mudou o erro.

O problema é só no INSERT?

Ele lista?