Olá, bem… estou fazendo um projeto pra faculdade sobre DOAÇÃO DE ÓRGÃOS, tenho que fazer alguns comandos através de java, e só meu select tá dando pau
to usando o MySQL, e tenho 4 tabelas, DOADOR, RECEPTOR, ORGAO e ESTOQUE
ESTOQUE recebe 3 chaves estrangeiras, uma de cada uma das outras tabelas
select de doador, órgão e receptor já fiz, está funcionando… .mas estoque estou perdida com as chaves estrangeiras
dois comandos de select que tenho que fazer:
listar tudo de ESTOQUE
listar nome de órgão e receptor de ESTOQUE através do doador, que meu usuário vai entrar com a id
segue abaixo os códigos:
CLASSE ESTOQUE
public class Estoque {
private int esId;
private Doador doador;
private Receptor receptor;
private Orgao orgao;
//gets e sets
PARA LISTAR TUDO
public List<Estoque> getLista() {
try {
List<Estoque> dados = new ArrayList<Estoque>();
//DÚVIDA NA SINTAXE DESTE COMANDO...COMO REFERENCIAR MINHAS CHAVES NESTE COMANDO??
PreparedStatement ps = this.connection.prepareStatement("select * from estoque ????????????????");
ResultSet rs = ps.executeQuery(); // ponteiro, associado ao metodo
// executeQuery(), faz uma busca
// nos contatos
while (rs.next())// result set associado ao metodo next aponta ao
// próximo da tabela enquanto houver cadastros
{
Estoque estoque = new Estoque();
Orgao orgao = new Orgao();
orgao.setOrgId(rs.getInt("o.orgId"));
estoque.setOrgao(orgao);
Receptor receptor = new Receptor();
receptor.setReId(rs.getInt("r.reId"));
estoque.setReceptor(receptor);
Doador doador = new Doador();
doador.setDoId(rs.getInt("d.doId"));
estoque.setDoador(doador);
estoque.setEsId(rs.getInt("esId"));
dados.add(estoque);
}
rs.close();
ps.close();
return dados;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
PARA TESTAR LISTAR TUDO
try{
EstoqueDAO dao = new EstoqueDAO();
List<Estoque> dados = dao.getLista();
for(Estoque estoque : dados){
//CHAVE PRIMÁRIA
System.out.println("Id estoque: " + estoque.getEsId());
//CHAVES ESTRANGEIRAS
System.out.println("Id doador: " + estoque.getDoador().getDoId());
System.out.println("Id receptor: " + estoque.getReceptor().getReId());
System.out.println("Id orgao: " + estoque.getOrgao().getOrgId() + "\n");
}
System.out.println("");
System.out.println("FIM DA LISTA");
}catch(Exception e){ System.out.println(e); }
}
PARA LISTAR ATRAVÉS DO DOADOR
public List<Estoque> getLista(int idDo) {
try {
List<Estoque> cadastros = new ArrayList<Estoque>();
//QUANDO TENTO EXECUTAR ESTE COMANDO ELE ME IMPRIME UMA LISTA GIGANTE SEM SENTIDO
PreparedStatement ps = this.connection.prepareStatement("select r.reNome, o.orgNome from receptor r, orgao o, estoque e, doador d where e.esReId=r.reId and e.esOrgId=o.orgId and e.esDoId=?");
ps.setInt(1, idDo);
ResultSet rs = ps.executeQuery(); // ponteiro, associado ao metodo
// executeQuery(), faz uma busca
// nos contatos
while (rs.next())// result set associado ao metodo next aponta ao
// próximo da tabela enquanto houver cadastros
{
Estoque estoque = new Estoque();
Orgao orgao = new Orgao();
orgao.setOrgNome(rs.getString("o.orgNome"));
estoque.setOrgao(orgao);
Receptor receptor = new Receptor();
receptor.setReNome(rs.getString("r.reNome"));
estoque.setReceptor(receptor);
cadastros.add(estoque);
}
rs.close();
ps.close();
return cadastros;
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
PARA TESTAR LISTAR ATRAVÉS DO DOADOR
try{
EstoqueDAO dao = new EstoqueDAO();
List<Estoque> dados = dao.getLista();
for(Estoque estoque : dados){
System.out.println("Nome receptor: " + estoque.getReceptor().getReNome());
System.out.println("Nome orgao: " + estoque.getOrgao().getOrgNome() + "\n");
}
System.out.println("");
System.out.println("FIM DA LISTA");
}catch(Exception e){ System.out.println(e); }
}
Obrigada pessoal!