Consultar dados de tabelas ralacionadas - MySql

2 respostas
skekeu

Bom dia galera,

Estou fazendo uns testes aqui pra aprender sobre relacionamento entre tabelas.

Bem, criei as tabelas cliente e pedido ...

minha tabela cliente tem os campos:
Id(chave primaria)
nome
idade

minha tabela pedido tem os campos:
pedido_Id(chave primaria)
cliente_Id(fk)
idade

Estou conseguindo adicionar dados normalmente, mas quando vou fazer uma busca...não to sabendo bem o q fazer:

Classe Pedido
public class Pedido {

    private int pedido_Id;
    private Cliente c;
    private int cliente_Id;
    private String datapedido;
//getters e setters
Classe Cliente
public class Cliente {

    private int Id;
    private String nome;
    private int idade;
    
//getters e setters
PedidoDao
public List todosPedidos()throws Exception{
open();
List<Pedido> lista = new ArrayList<Pedido>();
stm = con.prepareStatement("select pedido.*, cliente.nome from pedido inner join cliente on pedido.cliente_Id = cliente.Id");
ResultSet rs = stm.executeQuery();
while(rs.next()){
Pedido p = new Pedido();
p.setCliente_Id(rs.getInt("pedido.cliente_Id"));
p.getC().setNome(rs.getString("cliente.nome"));//se tirar isso ele faz a consulta
p.setPedido_Id(rs.getInt("pedido.pedido_Id"));
p.setDatapedido(rs.getString("pedido.datapedido"));
lista.add(p);
}
return lista;
}
jsp onde resgato os dados
<%
try{
PedidoDao pd = new PedidoDao();
List lista = new ArrayList();

lista = pd.todosPedidos();

for(int i=0;i<lista.size();i++){
Pedido p = (Pedido)lista.get(i);

out.print(p.getCliente_Id());//aqui terá uma tabela,  coloquei assim pra ver se estava funcionando

}
}catch(Exception e){
out.print(e.getMessage());
}
%>

Quando testo a query no mysql front da tudo certo, então acho q erro ta no codigo

se puderem ajudar agradeceria

Valew!!!

2 Respostas

P

o erro está justamente nessa linha

p.getC().setNome(rs.getString(“cliente.nome”));//se tirar isso ele faz a consulta

seu cliente está nulo, então não dá pra setar o nome dele.

vai ter que fazer algo :

p.setC(new Cliente(p.getCliente_Id));
p.getC().setNome(rs.getString("cliente.nome"))
skekeu

Puka:
o erro está justamente nessa linha

p.getC().setNome(rs.getString(“cliente.nome”));//se tirar isso ele faz a consulta

seu cliente está nulo, então não dá pra setar o nome dele.

vai ter que fazer algo :

p.setC(new Cliente(p.getCliente_Id)); p.getC().setNome(rs.getString("cliente.nome"))

Valew cara … funcionou. Focou assim:

p.setC(new Cliente()); p.getC().setNome(rs.getString("cliente.nome"));

muito obrigado :wink:

Criado 26 de novembro de 2009
Ultima resposta 26 de nov. de 2009
Respostas 2
Participantes 2