inserindo valores em mais de uma tabela com JDBC relacionamentos
Olá galera, meu problema é o seguinte, eu fiz um insert utilizando uma chave estrangeira, e eu fiz deu certo, blz. mas
fui tentar inserir mais tabelas no meu insert no cadastro de professores, mas não estou conseguindo os ids das outras tabelas não estão sendo retornandos, como posso resolver isso gente? agradeço desde já!
segue meu código abaixo!
public class Professor implements Serializable {
private int id_professor;
private int nivelAcesso = 2;
private String nome;
private Acesso acesso;
private Turma turma;
private Materia materia;
e o meu insert:
public void inserirProfessor(Professor professor) {
Integer idacesso = inserirAcessos(professor.getAcesso());
Integer idTurma = inserirTurma(professor.getTurma());
String sqlAluno = "insert into professor (nome,acesso_id,turma_id,id_materia) values (?,?,?,?)";
try {
PreparedStatement psAluno = con.prepareStatement(sqlAluno, Statement.RETURN_GENERATED_KEYS);
psAluno.setString(1,professor.getNome());
psAluno.setInt(2, idacesso);
psAluno.setInt(3, idTurma);
psAluno.setInt(4,professor.getMateria().getId_materia());
psAluno.execute();
con.close();
} catch (SQLException ex) {
Logger.getLogger(AlunoDao.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
} catch (NullPointerException e) {
throw new RuntimeException(sqlAluno);
}
}
public Integer inserirTurma(Turma turma) {
Integer result = null;
String SQL = "insert into turma (serie,descricao) values (?,?)";
try {
PreparedStatement ps = con.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, turma.getSerie());
ps.setString(2, turma.getDescricao());
ps.execute();
ResultSet keys = ps.getGeneratedKeys();
if (keys.next()) {
result = keys.getInt(1);
}
} catch (SQLException ex) {
Logger.getLogger(AlunoDao.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
return result;
}
public Integer inserirAcessos(Acesso acesso) {
Integer result = null;
String sqlAcesso = "insert into acesso (login,senha,tipo) values (?,?,?)";
try {
PreparedStatement psAcesso = con.prepareStatement(sqlAcesso, Statement.RETURN_GENERATED_KEYS);
psAcesso.setString(1, acesso.getLogin());
psAcesso.setString(2, acesso.getSenha());
psAcesso.setInt(3, acesso.getTipo());
psAcesso.execute();
ResultSet keys = psAcesso.getGeneratedKeys();
if (keys.next()) {
result = keys.getInt(1);
}
} catch (SQLException ex) {
Logger.getLogger(AlunoDao.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
return result;
}
public Integer inserirMateria(Materia materia) {
Integer result = null;
String sqlAcesso = "insert into materia (descricao) values (?)";
try {
PreparedStatement psAcesso = con.prepareStatement(sqlAcesso, Statement.RETURN_GENERATED_KEYS);
psAcesso.setString(1,materia.getDescricao() );
psAcesso.execute();
ResultSet keys = psAcesso.getGeneratedKeys();
if (keys.next()) {
result = keys.getInt(1);
}
} catch (SQLException ex) {
Logger.getLogger(AlunoDao.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
return result;
}
fui tentar inserir mais tabelas no meu insert no cadastro de professores, mas não estou conseguindo os ids das outras tabelas não estão sendo retornandos, como posso resolver isso gente? agradeço desde já!
segue meu código abaixo!
public class Professor implements Serializable {
private int id_professor;
private int nivelAcesso = 2;
private String nome;
private Acesso acesso;
private Turma turma;
private Materia materia;
e o meu insert:
public void inserirProfessor(Professor professor) {
Integer idacesso = inserirAcessos(professor.getAcesso());
Integer idTurma = inserirTurma(professor.getTurma());
String sqlAluno = "insert into professor (nome,acesso_id,turma_id,id_materia) values (?,?,?,?)";
try {
PreparedStatement psAluno = con.prepareStatement(sqlAluno, Statement.RETURN_GENERATED_KEYS);
psAluno.setString(1,professor.getNome());
psAluno.setInt(2, idacesso);
psAluno.setInt(3, idTurma);
psAluno.setInt(4,professor.getMateria().getId_materia());
psAluno.execute();
con.close();
} catch (SQLException ex) {
Logger.getLogger(AlunoDao.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
} catch (NullPointerException e) {
throw new RuntimeException(sqlAluno);
}
}
public Integer inserirTurma(Turma turma) {
Integer result = null;
String SQL = "insert into turma (serie,descricao) values (?,?)";
try {
PreparedStatement ps = con.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, turma.getSerie());
ps.setString(2, turma.getDescricao());
ps.execute();
ResultSet keys = ps.getGeneratedKeys();
if (keys.next()) {
result = keys.getInt(1);
}
} catch (SQLException ex) {
Logger.getLogger(AlunoDao.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
return result;
}
public Integer inserirAcessos(Acesso acesso) {
Integer result = null;
String sqlAcesso = "insert into acesso (login,senha,tipo) values (?,?,?)";
try {
PreparedStatement psAcesso = con.prepareStatement(sqlAcesso, Statement.RETURN_GENERATED_KEYS);
psAcesso.setString(1, acesso.getLogin());
psAcesso.setString(2, acesso.getSenha());
psAcesso.setInt(3, acesso.getTipo());
psAcesso.execute();
ResultSet keys = psAcesso.getGeneratedKeys();
if (keys.next()) {
result = keys.getInt(1);
}
} catch (SQLException ex) {
Logger.getLogger(AlunoDao.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
return result;
}
public Integer inserirMateria(Materia materia) {
Integer result = null;
String sqlAcesso = "insert into materia (descricao) values (?)";
try {
PreparedStatement psAcesso = con.prepareStatement(sqlAcesso, Statement.RETURN_GENERATED_KEYS);
psAcesso.setString(1,materia.getDescricao() );
psAcesso.execute();
ResultSet keys = psAcesso.getGeneratedKeys();
if (keys.next()) {
result = keys.getInt(1);
}
} catch (SQLException ex) {
Logger.getLogger(AlunoDao.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
return result;
}
Emanuel
Curtidas 0
Respostas
Ronaldo Lanhellas
15/10/2014
Essa questão já foi respondida neste tópico: https://www.devmedia.com.br/forum/inserindo-valores-em-mais-de-uma-tabela-com-jdbc-relacionamentos/497860
GOSTEI 0