Problema com instancia por favor help me!

Pessoal to com um problemao aqui a dias e nao consigo resolver algueim pode me ajudar pelo amor de deus ;~~~ vejameu problema eu tenho uma classe q efetua conexao lista a minha tabela e faz o statment essa classe funciona perfeitamente porem nao cnsigo instaciar ela em uma outra classe para mim poder exibir os campos do meu banco no meus jtextfield, criei meu Bean tambem esta correto porem precisava instaciar e fazer aparecer o que tem no meu banco na tela veja so o que e ufis

public class Teste
{
    static final String url =    "jdbc:mysql://localhost/estudos";
    static final String driver = "com.mysql.jdbc.Driver";
    static final String us =     "root";
    static final String pw =     "123456";

    public ClienteBean selCliente(String cliCod)
    {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        ArrayList al = new ArrayList();
        EstudoBean cli = new EstudoBean();
        String sqlSelEstudo ="SELECT * FROM estudo WHERE Codigo LIKE ?";

        try
        {
            Class.forName(driver);
        }
        catch (ClassNotFoundException ex)
        {
            ex.printStackTrace();
        }

        try
        {
            conn=DriverManager.getConnection(url,us,pw);
            ps=conn.prepareStatement(sqlSelEstudo);
		    ps.setString(1,cliCod);
            rs=ps.executeQuery();
            
            while (rs.next())
            {
                cli.setNome(rs.getString("nome"));
                cli.setEndereco(rs.getString("endereco"));
                cli.setCodigo(rs.getString("codigo"));
            }
            rs.close();
            ps.close();
            conn.close();

        }
        catch (SQLException ex)
        {
            ex.printStackTrace();
        }
        return cli;
    }
}

Tenho uma outra classe q tem jtextfields como faco para inserir o conteudo da minha tabela la? criei um metodo no form que tem os jtextfield e debugai via System.out.println e ele pinta nulo na tela pq acho que nao instanciei corretamente a classe Teste!

 public void mostrarNomesF()
    {    
        jtF_Codigo.setText(cliente.getCodigo());
        System.out.println(cliente.getCodigo()); ele pinta null ;////
        jtF_Nome.setText(cliente.getNome());
        jtF_Endereco.setText(cliente.getEndereco());

Qqr ajuda é bem vinda to a nisso a dias ;// vlw mesmo

OBS: minhaclasse TesteBean esta funcionando corretamente! sou iniciante e to dando umas engasgadas vlw pela ajuda

Ken420, também sou novo nisso, mas vamos se consigo te ajudar :slight_smile: .

Vou tentar acompanhar seu raciocinio:

  • Você instancia um ArrayList, que eu imagino que seja para armazenar as instancias de EstudoBean, mas não o utiliza.

  • Você cria uma instancia de EstudoBean chamada cli, que utiliza para processar o recordSet retornado da consulta:

    • durante o processamento do recordSet você sempre sobreescreve o mesmo objeto cli e nunca o adiciona ao ArrayList;
    • esse método provavelmente sempre vai retornar apenas o último ClientBean encontrado (É isso mesmo que você queria ou você gostaria de retornar a lista completa?).
  • Agora sobre a utilização:

    • Pelo que vi faltou instanciar a classe teste :), e buscar o cliente que você queria.
  • Acredito que seu código deveria ficar assim:

public void mostrarNomesF() { Teste tst = new Teste(); //criando a instancia de teste ClienteBean cliente = tst.selCliente("codigoDoCliente"); //agora você tem uma instancia com informações. jtF_Codigo.setText(cliente.getCodigo()); System.out.println(cliente.getCodigo()); ele pinta null ;//// jtF_Nome.setText(cliente.getNome()); jtF_Endereco.setText(cliente.getEndereco());

  • Onde você estava instanciando este objeto cliente que você utilizou no método mostrarNomesF?

Espero ter conseguido ajudar um pouco! :slight_smile:

public static EstudoBean cliente = new EstudoBean();

public CadastroC(EstudoBean cl)
{
CadastroC.cliente=cl;
initComponents();

eu nao entendi isso amigo

ClienteBean cliente = tst.selCliente("codigoDoCliente"); //agora você tem uma instancia com informações.   *//aqui minha dúvida 
  jtF_Codigo.setText(cliente.getCodigo());   
  System.out.println(cliente.getCodigo()); ele pinta null ;////   
  jtF_Nome.setText(cliente.getNome()); 

*codigoDoCliente? e em jtF_Nome.setText como ele vai puxa o nome se ai so tem codigo?

e deixei assim
Dao tst = new Dao(); //criando a instancia de teste
ClienteBean cliente = tst.selCliente(“codigo”);
jtF_Codigo.setText(cliente.getCodigo());
System.out.println(cliente.getCodigo());

ele tambem esta pintando null ;//// alguem sabe pq?

ngm pra me da uma forca mesmo! ;/

problema continua =(

Cara… seguinte…

  • vc cria um objeto Cliente (é sempre bom dar nomes compreensível aos objetos para uma posterior identificação. Tipo: cliente seria BOM ter um objeto com o nome de cliente);

  • vc instancia a classe Cliente;

  • quando o Objeto estiver criado/instanciado vc popula o mesmo com os dados.

OBS: Erro de NullPointException sempre acontece quando vc está tentando acessar alguma coisa em um objeto ainda não criado/instanciado.

Exemplo simples:


Cliente cliente = new Cliente(); // instanciando com o construtor padrão. Boa prática.
cliente.setNome("João");
cliente.setDataNascimento("01/01/2000");

Quando for acessar:

String nomeCliente = cliente.getNome();  // resgato o nome do cliente.

Acho que com isso, já dá uma clareada pra ti. Qualquer coisa, manda aê… vlw.
:slight_smile: