1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema em um metodo dentro de um ActionListener.

Ola, estou com um problema que literalmente não sei o porque esta acontecendo. Tenho um Método BuscarDados() que faz a busca de dados dentro do meu Banco de Dados MySQL pelo Java. Ao chamar o método clicando no Botão de Busca na minha interface ele da um erro que também não sei qual é. Debuggando ele diz apenas Search not Found. A coisa engraçada é que quando eu jogo o corpo do método dentro do actionListener do JButton ele faz a pesquisa normalmente e sem erros. Bom como gosto, tento, de deixar meu código bem estruturado, não queria um método gigantesco dentro de um actionlistener. Bom vocês conseguem me ajudar?

Vou mandar o código pra vocês aqui de uma parte do frame:

package Interface_banco;


import java.awt.Button;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;





public class NovaJanela extends JFrame {

    private JPanel contentPane2;
    public JTextField myInfo3; // campos de entrada de texto
    private JLabel lblInforme3;// campos de informacao
    private JButton continuarNovaJanela;// botoes usados
    private int i = 0;// contador usado para o ID usuario
    public JTextArea t_area1; // text area para a busca;


    /**
     * INICIA A APLICACAO
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    NovaJanela novaj = new NovaJanela();
                    novaj.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * CRIA O FRAME
     */
    public NovaJanela() {


        //configuracao da tela
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(400, 200, 530, 300);
        setTitle("Usuario");
        contentPane2 = new JPanel();
        contentPane2.setBackground(Color.DARK_GRAY);
        contentPane2.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane2);
        contentPane2.setLayout(null);

        /* Informativo `Nome` na tela*/
        JLabel lblInforme3 = new JLabel("Nome:");
        lblInforme3.setForeground(Color.WHITE);
        lblInforme3.setFont(new Font("TimesRoman", Font.BOLD, 20));
        lblInforme3.setBounds(20, 11, 300, 31);
        contentPane2.add(lblInforme3);

        //TENTAR FAZER TEXT AREA
        JTextArea t_area1 = new JTextArea();
        t_area1.setBackground(Color.gray);
        t_area1.setBounds(20, 50, 50, 50);
        t_area1.setSize(470, 140);    
        t_area1.setEditable(false);
        contentPane2.add(t_area1);

        /* Campo: Nome*/
        myInfo3 = new JTextField();
        myInfo3.setBounds(91, 16, 400, 22);
        contentPane2.add(myInfo3);
        myInfo3.setColumns(10);

        /* Botao 1 na tela*/
        Button buscarButton2 = new Button("Buscar");
        buscarButton2.setBackground(Color.WHITE);
        buscarButton2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if(myInfo3.getText().equals("")){

                    limparCampos();
                    JOptionPane.showMessageDialog(null, "Campo 'Nome' e/ou 'Cargo' precisa ser preenchido!");
                }else{
                    t_area1.setBackground(Color.WHITE);
                    BuscarDados();

                }
            }
        });
        buscarButton2.setBounds(167, 200, 67, 22);
        buscarButton2.setSize(210, 50);  
        contentPane2.add(buscarButton2);


        // NOVO BOTAO PARA CRIAR UMA NOVA JANELA
        Button continuarNovaJanela = new Button("Voltar");
        continuarNovaJanela.setBackground(Color.white);
        continuarNovaJanela.addActionListener(new ActionListener() {

         public void actionPerformed(ActionEvent arg0) {

        // comando para fechar o JFrame atual.
            dispose();
        // Comando para chamar o próximo JFrame.
            Menu jmenu = new Menu();
            jmenu.setVisible(true);

         }
        });
        continuarNovaJanela.setBounds(387, 220, 67, 22);
        continuarNovaJanela.setSize(100, 30);
        contentPane2.add(continuarNovaJanela);



    }

    public void BuscarDados() {


        try {
        // * Drive Conector MySQL.
            Class.forName("com.mysql.jdbc.Driver");

        // * Conexão como BD.
        Connection con = DriverManager.getConnection(
        "jdbc:mysql://localhost/bancousuario", "root", "63419100");



        // * Objeto comdo SQL.
        String cadNome2 = myInfo3.getText();

        String sql3 = "SELECT * FROM usuario where Nome = '"+cadNome2+"';";  

        Statement stmt = (Statement) con.createStatement();


        ResultSet rs_nv = (ResultSet) stmt.executeQuery(sql3);

        while(rs_nv.next()) {



            String Nome = rs_nv.getString("Nome"); 
            String Cargo = rs_nv.getString("Cargo_que_ocupa");
                                                                                // NAO TA FUNCIONANDO AQUI, OU O SELECT OU O PRINT!!
                                                                                // NAO TA FUNCIONANDO AQUI!!!!!!!!!!!!!!
            t_area1.append("Nome: "+Nome+"Cargo: "+Cargo+"\n");


        }



        JOptionPane.showMessageDialog(null, "Pesquisa realizada com Sucesso!");




         // limpa os campos ates do prox cadastro
        limparCampos();

        // * Fecha a conexão do o DB.
        con.close();

        } catch (SQLException Erro) {
        JOptionPane.showMessageDialog(null,
        "Erro Cmdo SQL - " + Erro.getMessage());

        // Trata erros de conexão.
        } catch (ClassNotFoundException Erro) {

        JOptionPane.showMessageDialog(null, "Driver não encontrado!");

        }
    }

    //Ao clicar em "limpar" o botao ira zerar os campos preenchidos com esse metodo
    public void limparCampos() {
        myInfo3.setText(null);


    }
}

Obs: se você tirar BuscarDados() de dentro do Action e colocar o corpo todo do método lá, vai rodar o código de boa.

Obs2: deve ter uns lixos ai no código viu.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java banco-de-dados busca ou faça a sua própria pergunta.