Eu estou utilizando a ultima versão que foi lançada do MySQL e a ultima do eclipse que se tem disponibilidade atualmente, contudo quando eu utilizo em meu código como parâmetro pontos de interrogação para substituir eles dps com variaveis, aparece o seguinte erro: java.sql.SQLSyntaxErrorException: 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.
O connector do mysql está atualizado, o eclipse tbm, contudo esse erro persiste mesmo cmg mudando os paths do java, poderia ser algum erro do JRE System que está na versão 1.8 que é a padrão do eclipse ou é algum erro exterior ?
public class TestaInsereAluno {
public static void main(String[] args) {
String local = “jdbc:mysql://localhost/turmas”;
String login = “root”;
String senha = “root”;
Connection bd = null;
Scanner i = new Scanner(System.in);
System.out.println("Inserção de Aluno:");
System.out.println("\nDigite o nome:");
String nomeDoAluno = i.nextLine();
System.out.println("Digite a idade:");
int idadeDoAluno = i.nextInt();
i.nextLine();
System.out.println("Digite a cidade:");
String cidadeDoAluno = i.nextLine();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("Driver carregado com sucesso.");
bd = (Connection) DriverManager.getConnection(local, login, senha);
System.out.println("Conexão estabelecida com sucesso");
//Inserindo um aluno
String sql = "insert into aluno(nome,idade,cidade) values (?,?,?)";
PreparedStatement comando = bd.prepareStatement(sql);
comando.setString(1, nomeDoAluno);
comando.setInt(2, idadeDoAluno);
comando.setString(3, cidadeDoAluno);
comando.execute(sql);
System.out.println("Aluno inserido com sucesso");
bd.close();
System.out.println("Conexão encerrada com sucesso");
}catch(ClassNotFoundException e) {
System.out.println("DRIVER DO BANCO NÃO ENCONTRADO.");
} catch(SQLException e) {
System.out.println("ERRO CONECTANDO AO BANCO");
e.getMessage();
System.out.println(e);
}
}
}
A table de aluno consiste em:
Columns:
|nome|varchar(45) PK|
|idade|int UN|
|cidade|varchar(45)|
O driver que estou usando para conectar ambos é o mysql-connector-j-8.0.32.jar
com.mysql.cj.jdbc.Driver
Caso o código não utilize os pontos de interrogação para a atribuição posterior das variáveis, ele funciona normalmente sem ocorrer esse erro, segue o código abaixo:
public class TelaInsereAluno2 {
public static void main(String[] args) {
String local = “jdbc:mysql://localhost/turmas”;
String login = “root”;
String senha = “root”;
Connection bd = null;
Scanner i = new Scanner(System.in);
System.out.println("Inserção de Aluno:");
System.out.println("\nDigite o nome:");
String nomeDoAluno = i.nextLine();
System.out.println("Digite a idade:");
int idadeDoAluno = i.nextInt();
i.nextLine();
System.out.println("Digite a cidade:");
String cidadeDoAluno = i.nextLine();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("Driver carregado com sucesso.");
bd = (Connection) DriverManager.getConnection(local, login, senha);
System.out.println("Conexão estabelecida com sucesso");
//Inserindo um aluno
String sql = "insert into aluno " + "(nome,idade,cidade) " +
" values (\""
+ nomeDoAluno + "\","
+ idadeDoAluno + ",\""
+ cidadeDoAluno + "\")";
Statement comando = bd.createStatement();
comando.execute(sql);
System.out.println("Aluno inserido com sucesso");
bd.close();
System.out.println("Conexão encerrada com sucesso");
}catch(ClassNotFoundException e) {
System.out.println("DRIVER DO BANCO NÃO ENCONTRADO.");
} catch(SQLException e) {
System.out.println("ERRO CONECTANDO AO BANCO");
e.getMessage();
System.out.println(e);
}
}
}