[Ajuda] popular dados
Bom dia estou com uma duvidade como fazer uma select para caputurar dados tipo assim.
tenho uma tabela tanques e outra tabela remanejo e tenho uma tela q tem q mostrar o seguintes campo.
CODIGO, DATA, ORIGEM E DESTINO, QTD.
O problema e que os campos ORIGEM E DESTINO fazer referencia ao campo id da tabela tanques enta so estou
conseguindo popuplar o campo ORIGEM pq eu naum guardo o nome do campo so guardo o ID entao como faco para preencher os dois ?
public List getManejo() throws SQLException {
String sql = "select remanejo.id_remanejo,remanejo.remj_data,remanejo.id_origem,tanques.tanq_descricao,"
+ "remanejo.id_destino,remanejo.remj_qtd from public.remanejo inner join public.tanques on tanques.id_tanque = remanejo.id_origem";
ResultSet rs = executeQuery(sql);
List toReturn = new LinkedList();
while (rs.next()) {
toReturn.add(populateManejo(rs));
}
return toReturn;
}
private Remanejo populateManejo(ResultSet rs) throws SQLException {
Remanejo toReturn = new Remanejo();
toReturn.setId(rs.getInt("id_remanejo"));
toReturn.setData(rs.getDate("remj_data"));
toReturn.setDescricao(rs.getString("tanq_descricao"));
toReturn.setQtd(rs.getInt("remj_qtd"));
return toReturn;
}
Adriano Carvalho
Curtidas 0
Respostas
Davi Costa
09/10/2010
Tem várias maneiras de fazer isso...
Cria uma outra classe que tenha como atributos as duas entiades que vc quer:
public class TanqueRemanejo{
private Tanque tanque;
private Remanejo remanejo;
//getters e setters
}
Na hora de popula o que chega no banco tu joga o valor para esse novo objeto. E a tabela agora vai ser
desse novo objeto também.
Espero ter ajudado
Att Davi
Cria uma outra classe que tenha como atributos as duas entiades que vc quer:
public class TanqueRemanejo{
private Tanque tanque;
private Remanejo remanejo;
//getters e setters
}
Na hora de popula o que chega no banco tu joga o valor para esse novo objeto. E a tabela agora vai ser
desse novo objeto também.
Espero ter ajudado
Att Davi
GOSTEI 0
Dyego Carmo
09/10/2010
Resolvido amigo ?
Valeu Z!
Valeu Z!
GOSTEI 0
Daniel Thomaz
09/10/2010
naum
GOSTEI 0
Julio Cesar.
09/10/2010
Não entendi o problema? É referente á algum curso?
att,
Julio Cesar
GOSTEI 0
Adriano Carvalho
09/10/2010
da uma olhada na minha tabela .
como vc pode ve eu tenho dois campos nessa tabela q fazer referencia ai mesmo campo de outra.
entao quero preencher aquela tela acima sedo q mostre o nome do tanque de origem e destino.
senda q os campos id_origem e id_destino fazem referencia ao campo id_tanque da tabela tanques.
entao use o seguinte no netbeans.
mais isso so me traz o nome do tanque de origem como faco para trazer o nome do tanque de destino tbm?
/*==============================================================*/ /* Table: remanejo */ /*==============================================================*/ create table remanejo ( id_remanejo SERIAL not null, remj_data DATE not null, id_origem int4 not null, id_destino int4 not null, remj_qtd INT4 null default 0, remj_peso decimal(15,3) null default 0.00, sql_deleted char(1) null default 'F' constraint CKC_SQL_DELETED_REMANEJO check (sql_deleted is null or (sql_deleted = upper(sql_deleted))) ); alter table remanejo add constraint PK_REMANEJO primary key (id_remanejo); /*==============================================================*/ /* Index: indx_id_remanejo */ /*==============================================================*/ create unique index indx_id_remanejo on remanejo ( id_remanejo ); /*==============================================================*/ /* Index: indx_id_origem */ /*==============================================================*/ create index indx_id_origem on remanejo ( id_origem ); /*==============================================================*/ /* Index: indx_id_destino */ /*==============================================================*/ create index indx_id_destino on remanejo ( id_destino ); alter table remanejo add constraint fk_id_tang_orig_remaj foreign key (id_origem) references tanques (id_tanque) on delete restrict on update restrict; alter table remanejo add constraint fk_id_tanq_dest_remaj foreign key (id_destino) references tanques (id_tanque) on delete restrict on update restrict;
como vc pode ve eu tenho dois campos nessa tabela q fazer referencia ai mesmo campo de outra.
entao quero preencher aquela tela acima sedo q mostre o nome do tanque de origem e destino.
senda q os campos id_origem e id_destino fazem referencia ao campo id_tanque da tabela tanques.
entao use o seguinte no netbeans.
public List<Remanejo> getManejo() throws SQLException {
String sql = "select remanejo.id_remanejo,remanejo.remj_data,remanejo.id_origem,tanques.tanq_descricao,"
+ "remanejo.id_destino,remanejo.remj_qtd from public.remanejo inner join public.tanques on tanques.id_tanque = remanejo.id_origem";
ResultSet rs = executeQuery(sql);
List<Remanejo> toReturn = new LinkedList<Remanejo>();
while (rs.next()) {
toReturn.add(populateManejo(rs));
}
return toReturn;
}
mais isso so me traz o nome do tanque de origem como faco para trazer o nome do tanque de destino tbm?
GOSTEI 0
Davi Costa
09/10/2010
Acredito que a parte do java, como havia citado antes vc deva ter entendido.
Mas agora ficou um pouco mais claro seu problema, que é no select.
Adriano dá uma pesquisada em left join e outer join, que essa pode ser sua solução.
Att Davi
Mas agora ficou um pouco mais claro seu problema, que é no select.
Adriano dá uma pesquisada em left join e outer join, que essa pode ser sua solução.
Att Davi
GOSTEI 0
Adriano Carvalho
09/10/2010
ok. vou ver aqui bixo enrolado esse
GOSTEI 0
Dyego Carmo
09/10/2010
Conseguiu resolver?
GOSTEI 0
Adriano Carvalho
09/10/2010
ainda naum...
GOSTEI 0
Davi Costa
09/10/2010
Cara só uma sugestão,se este não for um sistema embarcado que vc trabalhe, se for um sistema seu.
Utiliza JPA em vez de JDBC, vai facilitar e muito sua vida.
Att Davi
Utiliza JPA em vez de JDBC, vai facilitar e muito sua vida.
Att Davi
GOSTEI 0
Adriano Carvalho
09/10/2010
RESOLVI TIRAR O OUTRO TANQUE DA MINHA TELA FICA BEM MAIS FACIL DE RESOLVER...KKKKKK..
GOSTEI 0