Boa Noite Galera…
Estou com a seguinte duvida.
Na minha class main estou pegando um valor de um campo JtxtFiel e passando para uma outra class… onde vou tratar o conteudo…
Mas quando eu passo pra minha outra class esta indo como NULL.
Minha Class Main
[code]
Cliente cliente = new Cliente();
cliente.setNOME(JtxtNome.getText()); [/code]
Minha Class onde vou tratar as informações
public List<Cliente> listar(boolean b) throws Exception {
Cliente cli = new Cliente();
BancoDeDados bd = new BancoDeDados();
bd.conectar();
String sql = "select * from cadcliente where nome = ?"
+ " order by nome";
PreparedStatement ps = bd.getPreparedStatement(sql);
ps.setString(1, cli.getNOME()); // Aqui passa como null
.
.
.
Se voce não tiver digitado nada no campo o valor dele se naum me engano é nulo,
se voce digitar alguma coisa, quando pegar o getText vira o valor informado
Estou passando um valor sim.
mas mesmo assim esta indo como NULL
E seu método está executando exatamente da maneira que você o implementou.
[code]
public List<Cliente> listar(boolean b) throws Exception {
//Aqui você criou o objeto cliente
Cliente cli = new Cliente();
BancoDeDados bd = new BancoDeDados();
bd.conectar();
String sql = "select * from cadcliente where nome = ?"
+ " order by nome";
PreparedStatement ps = bd.getPreparedStatement(sql);
//Aqui você pega seu objeto e usa o método getNOME(), sem mesmo ter adicionado nada ao objeto cli criado a cima
//Se você não passou valores para o objeto cli, como pretende recuperar algo dele?
ps.setString(1, cli.getNOME());
…
}[/code]
Na Class main onde executo estou passando ele para obj Cliente
[code]Cliente cliente = new Cliente();
cliente.setNOME(JtxtNome.getText()); // Aqui estou passando a valor [/code]
[quote=romarcio]E seu método está executando exatamente da maneira que você o implementou.
[code]
public List<Cliente> listar(boolean b) throws Exception {
//Aqui você criou o objeto cliente
Cliente cli = new Cliente();
BancoDeDados bd = new BancoDeDados();
bd.conectar();
String sql = "select * from cadcliente where nome = ?"
+ " order by nome";
PreparedStatement ps = bd.getPreparedStatement(sql);
//Aqui você pega seu objeto e usa o método getNOME(), sem mesmo ter adicionado nada ao objeto cli criado a cima
//Se você não passou valores para o objeto cli, como pretende recuperar algo dele?
ps.setString(1, cli.getNOME());
…
}[/code][/quote]
Não, você tem 2 objetos Cliente.
Um na Class main que você chamou de: cliente
E outro no método listar que você chamou de: cli
São objetos diferentes. No 1° foi setado o valor que veio da interface, mas no 2 você não seta nada.
Você tem que passar o cliente que você setou o valor para a outra classe, porque você está criando um cliente, setando o valor e depois em vez de usar o mesmo cliente, você esta dando new Cliente() e então criando um novo cliente.
Ou você passar o cliente por parâmetro ou cria na classe um metodo getCliente() para da outra classe você conseguir pegar esse cliente.