Bom dia !
Estou com um erro no insert do método inserirDisciplina, alguém pode me ajudar?
public class ConexaoDAO {
public static void inserirAluno(Aluno aluno) {
Connection con = Conexao.conectar();
String insert = "INSERT INTO aluno(nome,endereco,telefone,mediaFinal) VALUES (?,?,?,?)";
try {
PreparedStatement ps = con.prepareStatement(insert);
ps.setString(1, aluno.getNome());
ps.setString(2, aluno.getEndereco());
ps.setInt(3, aluno.getTelefone());
ps.setDouble(4, aluno.getMediaFinal());
ps.execute();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void inserirProfessor(Aluno aluno) {
Connection con = Conexao.conectar();
String insert = "INSERT INTO professores(nome,titularizacao) VALUES (?,?)";
try {
PreparedStatement ps = con.prepareStatement(insert);
ps.setString(1, aluno.getProfessor().getNome());
ps.setString(2, aluno.getProfessor().getTitularizacao());
ps.execute();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void inserirDisciplina(Aluno aluno) {
int codProfessor = 0;
int codAluno = 0;
Connection con = Conexao.conectar();
try {
String consultaP = "SELECT idprofessores FROM professores WHERE nome = '"+aluno.getProfessor().getNome()+"'";
PreparedStatement ps = con.prepareStatement(consultaP);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
codProfessor = rs.getInt(1);
}
String consultaD = "SELECT idAluno FROM aluno WHERE nome = '"+aluno.getNome()+"'";
PreparedStatement pst = con.prepareStatement(consultaD);
ResultSet rst = pst.executeQuery();
if (rst.next()) {
codAluno = rst.getInt(1);
}
String insert = "INSERT INTO disciplina(nome,data,"+codProfessor+","+codAluno+") "+"VALUES(?,?,?,?)";
PreparedStatement p = con.prepareStatement(insert);
p.setString(1, aluno.getDisciplina().getNome());
p.setString(2, aluno.getDisciplina().getData());
p.setInt(3, codProfessor);
p.setInt(4, codAluno);
p.execute();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
STACK TRACE
m.mysql.jdbc.exceptions.jdbc4.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 ‘12,13) VALUES(‘Pintura’,‘1111’,12,13)’ at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
at com.mysql.jdbc.Util.getInstance(Util.java:382)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3603)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1989)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2150)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362)
at BancoDAO.ConexaoDAO.inserirDisciplina(ConexaoDAO.java:90)
at bancodados.BancoDados.main(BancoDados.java:67)
Eu sei que o problema é na sintaxe do insert do método inserirDisciplina, mas não consegui achar o erro. Já verifiquei espaços entre outros, fiz um teste imprimindo a String insert
pra ver como estar os espaços tudo correto, já fiz o próprio comando no banco de dados pra ver se tem alguma falha e nada. Verifiquei os nomes das colunas com a aplicação e nada de errado.