Parametro passado no método null

Oi tenha esse método

    public void pesquisar_usuario(String Pesquisar) {
            
        Connection con = ConnectionFactory.getConnection();
        PreparedStatement stmt = null;
        String sql = "select id as Cód, nome as Nome, usuario as Login, senha as Senha, perfilUser as Perfil from user where nome like ?";
        
      
        
        try {
            pst = conexao.prepareStatement(sql);
            //passando o conteudo da caixa de texto para o --> ?
            //atemcao ao porcentagem % que é a continuação do SQL
            JOptionPane.showMessageDialog(null, Pesquisar);
            pst.setString(1, Pesquisar + "%");
            System.out.println("=============================");
            System.out.println(Pesquisar);
            
            
            rs = pst.executeQuery();
            
            TelaCadUser telaCadUser = new TelaCadUser();
            telaCadUser.tblUser.setModel(DbUtils.resultSetToTableModel(rs));

            telaCadUser.tblUser.getColumnModel().getColumn(0).setMaxWidth(40);
            telaCadUser.tblUser.getColumnModel().getColumn(1).setMaxWidth(200);
            telaCadUser.tblUser.getColumnModel().getColumn(2).setMaxWidth(200);
            telaCadUser.tblUser.getColumnModel().getColumn(3).setMaxWidth(200);
            telaCadUser.tblUser.getColumnModel().getColumn(4).setMaxWidth(200);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
            //JOptionPane.showMessageDialog(null, Pesquisar);
            
        }
        

    }

e no código da interface passo o parametro assim chamando o método

private void txtPesquisarKeyReleased(java.awt.event.KeyEvent evt) {                                         
        // TODO add your handling code here:
        UserDAO user = new UserDAO();
        user.pesquisar_usuario(this.txtPesquisar.getText().toString());
        
        //System.out.println(this.txtPesquisar.getText().toString());
        
        

    }  

mas depois que executa o trecho
pst.setString(1, Pesquisar + “%”);

fica null o parametro :frowning:

Na vdd é após isso
pst = conexao.prepareStatement(sql);

Se o parâmetro está nulo, é pq entrou nulo no método.

Antes de chamar o DAO, faz um output do texto do seu campo de pesquisa e vê se tem algo lá

sim tem, já fiz esse teste

essa parte é onde chamo o método no form, enquanto a pessoa digita faz um select no banco usando like
image

aqui o resultado digitei a letra B
e imprimiu no console
image

Uma pergunta: pq vc abriu uma conexão em cima e usou outra para o preparedStatement?

Poise sou iniciante no java mas tenho outros métodos funcionando só nao entendi pq aqui nao deu certo aparece a mensagem abaixo:

image

Adiciona e.printStackTrace(); antes de abrir essa dialog e posta o erro do console.

java.lang.NullPointerException
	at br.com.sgef.dao.UserDAO.pesquisar_usuario(UserDAO.java:101)
	at br.com.sgef.telas.TelaCadUser.txtPesquisarKeyReleased(TelaCadUser.java:439)
	at br.com.sgef.telas.TelaCadUser.access$800(TelaCadUser.java:19)
	at br.com.sgef.telas.TelaCadUser$10.keyReleased(TelaCadUser.java:333)
	at java.awt.Component.processKeyEvent(Component.java:6500)
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2832)
	at java.awt.Component.processEvent(Component.java:6316)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:835)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1103)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:974)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:800)
	at java.awt.Component.dispatchEventImpl(Component.java:4760)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


B

Observa que no final retornou o B que coloquei na caixa de pesquisa mas retornou direto lá da classe da tela

O erro está na linha 101 do seu Dao. O que tem lá?

Se for isso:

É porque esse objeto “conexao” está nulo.

Mude para con.prepareStatement(sql);

E de onde veio essa variável “pst”? Use o stmt que vc declarou em cima.

Por fim, não esqueça de fazer um finally depois do catch e fechar tudo (con, stmt, rs). Ou use try-with-ressources

Deu certo só não retornou os objetos na tabela ao digitar

Presta atenção no seu código:

    Connection con = ConnectionFactory.getConnection(); // aqui você criou uma variável que representa a conexão com o banco
    PreparedStatement stmt = null;
    String sql = "select id as Cód, nome as Nome, usuario as Login, senha as Senha, perfilUser as Perfil from user where nome like ?";
    
  
    
    try {
        pst = conexao.prepareStatement(sql); // e aqui você está chamando outra variavel chamada conexao