Efetuar pesquisa no BD e setar nos TextFields

6 respostas
Xamego

Boa Tarde,

Estou com um problema, no programinha que estou desenvolvendo existe uma parte para cadastro de funcionarios, o cadastro ocorre corretamente.
Porem quando tento efetuar a pesquisa do que foi cadastrado ocorre o erro em anexo.

Eu preciso pesquisar os campos no Banco e coloca-los nos TextFieds referentes para depois fazer a atualização.

Segue em anexo tmb os codigo que fiz:

Operações = É a parte pra conectar com o banco e pegar os dados.
btPesquisar = é o codigo dentro do botao pesquisar pra setar os campos de texto com os dados.

Qual o erro que estou cometendo?

Agradeço :D

Botão pesquisar
Operacoes op = new Operacoes();
            //op.PesquisarFuncionario(Codigo);

         if (txtCodigo.getText().equals("")) {
            JOptionPane.showMessageDialog(this, "Informe o código do aluno");
        } else {

            int Codigo = Integer.parseInt(txtCodigo.getText());
            ResultSet rs = op.PesquisarFuncionario(Codigo);
            if (rs != null) {
                try {
                    if (rs.next()) {
                       
                        txtCodigo.setText(rs.getString("Codigo"));
                        txtNome.setText(rs.getString("NM_Func"));
                        txtEnd.setText(rs.getString("End_Func"));
                        txtCargo.setText(rs.getString("Cargo_Func"));
                        txtTel.setText(rs.getString("Tel_Func"));
                        cbbLocal.setSelectedItem(rs.getString("Loc_Func"));;
                        cbbCont.setSelectedItem(rs.getString("Tip_Con"));
			txtImg.setText(rs.getString("Img"));
			if (rs.getString("Sexo").equalsIgnoreCase("Feminino"))
                            Feminino.setSelected(true);
                        else
                            Masculino.setSelected(true);
                        op.PesquisarFuncionario(Codigo);

                                                                   
                                      }
                } catch (SQLException ex) {
                    JOptionPane.showMessageDialog(null, "Problemas ao pesquisar o Funcionario.\n(Erro: " + ex.getMessage() + ")");
                }
            } else {
                JOptionPane.showMessageDialog(this, "Registro não encontrado");
            }
        }
Classe pra pegar os dados.
public ResultSet PesquisarFuncionario(int Codigo)
    {

             
             try{
                 ps=conexao.prepareStatement("SELECT * from Funcionarios WHERE Codigo=?");
                 ps.setInt(1,Codigo);
                 rs = ps.executeQuery();
        

        } catch(SQLException ex) {
            JOptionPane.showMessageDialog(null, "Problemas ao validar usuário! Verifique se inseriu os seus dados corretamente selecionando a opção de tipo de usuario");
        } finally {
            try {
                conexao.close();
            } catch(SQLException e) {
                JOptionPane.showMessageDialog(null, "Problema ao fechar conexão!");
            }
        }

        return(rs);

         }



6 Respostas

Xamego

Obrigado

Gustavo_Marques

mude a verificação do resultset de:

if (rs != null) {

para

if (rs != null || rs.isClosed() ) {

não analisei seu codigo com cuidado, ve se isso caisa erros de lógica.
Esse negócio de ficar passando resultset para lá e para cá não é uma boa ideia.

Vejo que sua aplicação não está seguindo os melhores padrões. Você esta vinculando diretamente os dados do resultset aos jtextfields. Estude um pouco sore MVC. Crie os beans para cada tabela, encapsule o código de acesso a dados em DAOs. Seguir isto por si só já ajuda a evitar erros.

Gustavo_Marques

correção:

if (rs != null || !rs.isClosed() ) {
Gustavo_Marques

Eita, agora vai

if (rs != null && !rs.isClosed() ) {
Xamego

Não funcionou, agora não aparece mais a mensagem e sim erro na compilação

Exception occurred during event dispatching:
java.lang.UnsupportedOperationException: Operation not yet supported

Mas obrigado pela tentativa :smiley:

Gustavo_Marques

Remova então a modificação que pedi

Analisei seu código, neste trecho:

if (rs.getString("Sexo").equalsIgnoreCase("Feminino"))  
      Feminino.setSelected(true);  
 else  
      Masculino.setSelected(true);  
      op.PesquisarFuncionario(Codigo);

remova este segundo

op.PesquisarFuncionario(Codigo);

pois o primeiro já fechou a conexão

Criado 28 de outubro de 2010
Ultima resposta 28 de out. de 2010
Respostas 6
Participantes 2