>
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
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?