Chamada a um Vo

6 respostas
R

Possuo uma classe ProdutosVo - é o meu VO de produtos
uma classe LeProdutos on está minha leitura aos dados no HsqlDb
e uma classe TelaProdutos on apresento meus dados em Swing

Minha classe LeProdutos tem:

ProdutosVo pvo = new ProdutosVo();

while (rs.next()){

pvo.setDescr(rs.getString(2));

pvo.setPreco(Double.valueOf(rs.getString(3)));

}
onde “seto” os dados no VO e está OK pois já verifiquei ele realmente “seta”

Na Minha classe TelaProdutos tenho:

ProdutosVo pvo = new LeProdutos(txtcodprod.getText());

txtdescr.setText(pvo.getDescr());

txtpreco.setText(pvo.getPreco().toString());

ele traz nulo os gets, mas o set ele realiza, porque?Estou zerando a variável em algum lugar, estou fazendo alguma chamada que está anulando.Acho que estou pecando em algum conceito de Java talvez

Se Eu setar os Dados na própria classe TelaProdutos  certo, mas não quero, quero realmente separar as coisas.

No aguardo

Obrigado

6 Respostas

danieldestro

Sua classe LeProdutos estende a classe ProdutoVo?

R

Sim:

import vo.ProdutosVo;

public class LeProdutos extends ProdutosVo {

danieldestro

Na verdade, conceitualmente, não é muito adequado isso não. Mas se ainda for fazer assim no construtor do seu LeProdutos, que é como vc está fazendo, deveria ficar assim:

public LeProduto( String codProd ) { // aqui vc busca o produto if( rs.next( ) ) { this.setDescr( rs.getString(2) ); this.setPreco( rs.geDouble(3) ); //... etc ... } }

R
meu construtor está assim(está tabulado no meu original):

public LeProdutos(String codprod) throws Exception {

try{

Class.forName(org.hsqldb.jdbcDriver);

conn = DriverManager.getConnection(jdbc:hsqldb:/database/teste,teste,"");

st = conn.createStatement();

expression=Select * from Produtos Where codprod= + codprod;

rs = st.executeQuery(expression);

ProdutosVo pvo = new ProdutosVo();

while (rs.next()){

<a href="//pvo.setCodprod">//pvo.setCodprod</a>(rs.getString(1).compareTo(rs.getString(1)));

pvo.setDescr(rs.getString(2));

pvo.setPreco(Double.valueOf(rs.getString(3)));

pvo.setIpi(Integer.valueOf(rs.getString(4)));

pvo.setLinha(rs.getString(5));

}

rs.close();

conn.close();

}

catch (SQLException ex3) {

ex3.printStackTrace();

rs.close();

conn.close();

}

}
danieldestro

Se o seu LeProduto já estende ProdutoVo, vc não precisa fazer isso:

ProdutosVo pvo = new ProdutosVo&#40;&#41;; while &#40;rs.next&#40;&#41;&#41;&#123; //pvo.setCodprod&#40;rs.getString&#40;1&#41;.compareTo&#40;rs.getString&#40;1&#41;&#41;&#41;; pvo.setDescr&#40;rs.getString&#40;2&#41;&#41;; //...

Mas vc deve fazer isso:

if&#40; rs.next&#40; &#41; &#41; &#123; this.setDescr&#40; rs.getString&#40;2&#41; &#41;; this.setPreco&#40; rs.geDouble&#40;3&#41; &#41;; //... etc ... &#125;

Principalmente pq depois vc faz assim:

ProdutosVo pvo = new LeProdutos&#40;txtcodprod.getText&#40;&#41;&#41;;

R

Obrigado, ficou OK.

Criado 9 de agosto de 2004
Ultima resposta 10 de ago. de 2004
Respostas 6
Participantes 2