Busca em banco de dados

5 respostas
V

Pessoal estou tentando fazer com que eu busque um codigo no meu banco e copie o valor do nome do funcionario para um JText field, essa é a classe com o metodo.
Por favor alguem sabe me dizer porque esta dando o erro abaixo?
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at cadastros.Manage.auxiliaBuscar(Manage.java:90)
at cadastros.Manage$1.actionPerformed(Manage.java:40)

package inicio;

import java.sql.*;

import javax.naming.spi.DirStateFactory.Result;
import javax.swing.JOptionPane;

import cadastros.Funcionario;

public class Banco {
	Connection conexao;
	public void conectar(){
		String url = "jdbc:postgresql://localhost:5432";
		String usuario = "postgres";
		String senha = "8419564";
		try {
		    Class.forName("org.postgresql.Driver");
		    conexao = DriverManager.getConnection(url, usuario, senha);
		} catch (ClassNotFoundException e) {
		    e.printStackTrace();
		} catch (SQLException e) {
		    e.printStackTrace();
		}
		
		}
	

	public void inserirFuncionario(int codigo, String nome){
		try {
			this.conectar();
			Statement stm = conexao.createStatement();
			stm.executeUpdate("insert into funcionarios(codigo,nome) values('"+codigo+"','"+nome+"')");
			 
		} catch (SQLException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null,"Erro ao inserir o funcionario");
			
		}
	}

	public Funcionario buscarFuncionario(int codigo) throws SQLException{
		this.conectar();
			Statement stm = conexao.createStatement();
			ResultSet rs = stm.executeQuery("select codigo,nome from funcionarios where codigo = "+codigo);
			rs.next();
			Funcionario f = new Funcionario(codigo, rs.getString("nome"));
			
			return f;	
	}


}
package cadastros;


import inicio.Banco;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import javax.swing.*;

public class Manage {
	JFrame frame;
	public JTextField tfCodigo;
	public JTextField tfNome;
	public void cadastrar(){
		frame = new JFrame("Cadastro de Funcionario");
		JLabel lCodigo = new JLabel("Codigo");
		JLabel lNome = new JLabel("Nome");
		tfCodigo = new JTextField(2);
		tfNome = new JTextField(30);
		JPanel pane = new JPanel();
		JPanel pane2 = new JPanel();
		JButton salvar = new JButton("Salvar");
		JButton novo = new JButton("Novo");
		Icon lupa = new ImageIcon("D:/lupa2.jpg");
		JButton buscar = new JButton(lupa);
		Color branco = new Color(248,248,255);
		buscar.setBackground(branco);
		buscar.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				Banco b = new Banco();
				int cod = Integer.parseInt(tfCodigo.getText());
				try {
					Manage m = new Manage();
					m.auxiliaBuscar(b.buscarFuncionario(cod));
					
				} catch (SQLException e) {
					e.printStackTrace();
					JOptionPane.showMessageDialog(null,"Erro no acesso ao Banco de Dados!");
				}
					
			}
		});
		
		novo.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent arg0) {
				tfCodigo.setText("");
				tfNome.setText("");
				tfCodigo.setEditable(true);
				tfNome.setEditable(true);
			}
		});
		salvar.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				try{
				Banco b = new Banco();
				int cod = Integer.parseInt(tfCodigo.getText());
				b.inserirFuncionario(cod,tfNome.getText());
				tfCodigo.setEditable(false);
				tfNome.setEditable(false);
				}catch(NumberFormatException e1){
					JOptionPane.showMessageDialog(null,"Codigo invalido");
				}
				
			}
		});
		pane.add(lCodigo);
		pane.add(tfCodigo);
		pane.add(buscar);
		pane.add(lNome);
		pane.add(tfNome);
		pane2.add(salvar);
		pane2.add(novo);
		frame.setLayout(new BorderLayout());
		frame.add(BorderLayout.NORTH, pane);
		frame.add(BorderLayout.SOUTH, pane2);
		frame.setSize(600,150);
		frame.setResizable(false);
		frame.setVisible(true);
	}
	public void auxiliaBuscar(Funcionario f){
		tfNome.setText(f.getNome());
	
	}
	
}

5 Respostas

CristianPalmaSola10

o problema esta na linha 90 da classe Manage …

Henrique_Moraes

Amigo, verifique se você instanciou o objeto do tipo Funcionario, que você está passando por parâmetro.

V

Rapaz, pelo que eu verifiquei eu estanciei sim, tanto é que não deu erro de compilação.
Mas como sou muito novato em Java o que vocês puderem sugerir pra eu melhorar esse codigo eu fico muito grato!

ViniGodoy

Por favor, ao postar tópicos, não poste o título inteiro em letras MAIÚSCULAS.

V

Desculpe pelo titulo do Post. Foi meu primeiro post, mas isso não vai voltar a acontecer!
Grato a todos!

Criado 8 de fevereiro de 2013
Ultima resposta 9 de fev. de 2013
Respostas 5
Participantes 4