Solução para listar dados em uma tabela, pq não funciona?

3 respostas
D

Fiz o seguinte programa com BD (Vou lista apenas as classes relevantes, caso queiram que eu poste algo mais é so pedir):

CLASSE TELA:

package Visual;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import Controle.*;


public class TelaCliente
{
	private JFrame tela;
	
	private JLabel Lcodigo;
	private JTextField Ccodigo;
	
	private JLabel Lnome;
	private JTextField Cnome;
		
	private JLabel Lendereco;
	private JTextField Cendereco;
	
	private JLabel Ltel_cel;
	private JTextField Ctel_cel;
	
	private JTable tabela;
	
	private JButton Bcadastrar;
	private JButton Balterar;
	private JButton Bconsultar;
	private JButton Bexcluir;
	private JButton Bsair;
	
	private JPanel painel1;
	private JPanel painel2;

	private JScrollPane sPainel;
	
	public TelaCliente()
	{
		
		tela		= new JFrame("CADASTRO DE CLIENTES");
		
		Lcodigo = new JLabel("Codigo");
		Ccodigo = new JTextField(5);
		
		Lnome = new JLabel("Nome");
		Cnome = new JTextField(50);
						
		Lendereco = new JLabel("Endereço");
		Cendereco = new JTextField(50);
		
		Ltel_cel = new JLabel("Tel/Cel");
		Ctel_cel = new JTextField(20);
		
		String [] titulo = {"Codigo","Nome","Endereço","Tel/Cel"};
		tabela = new JTable (new DefaultTableModel(null,titulo));
		tabela.setPreferredScrollableViewportSize(new Dimension(800,150));
	
		Bcadastrar = new JButton ("Cadastrar");
		Balterar   = new JButton ("Alterar");
		Bexcluir   = new JButton ("Excluir");
		Bconsultar = new JButton ("Consultar");
		Bsair      = new JButton ("Sair");
		
		Bcadastrar.addActionListener(new ControleCliente(tela));
		Balterar.addActionListener(new ControleCliente(tela));
		Bexcluir.addActionListener(new ControleCliente(tela));
		Bconsultar.addActionListener(new ControleCliente(tela));
		Bsair.addActionListener(new ControleCliente(tela));
		
				
		painel1 = new JPanel();
		painel1.setLayout(new GridBagLayout());
		tela.getContentPane().add(painel1);

		painel2 = new JPanel();
		painel2.setLayout(new GridLayout(1,5));
		
		painel2.add(Bcadastrar);
		painel2.add(Balterar);
		painel2.add(Bexcluir);
		painel2.add(Bconsultar);
		painel2.add(Bsair);
		
		sPainel = new JScrollPane (tabela);
		
		GridBagConstraints c;
		c = new GridBagConstraints();
		
		c.insets = new Insets(5,10,5,5);
		c.anchor = GridBagConstraints.NORTHWEST;
		
		c.gridx = 0;
		c.gridy = 0;
		
		painel1.add(Lcodigo,c);
		c.gridx = 1;
		c.gridy = 0;
		painel1.add(Ccodigo,c);
		c.gridx = 0;
		c.gridy = 1;
		
		painel1.add(Lnome,c);
		c.gridx = 1;
		c.gridy = 1;
		painel1.add(Cnome,c);
		c.gridx = 0;
		c.gridy = 2;
		
		painel1.add(Lendereco,c);
		c.gridx = 1;
		c.gridy = 2;
		painel1.add(Cendereco,c);
		c.gridx = 0;
		c.gridy = 3;
		
		painel1.add(Ltel_cel,c);
		c.gridx = 1;
		c.gridy = 3;
		painel1.add(Ctel_cel,c);
		c.gridx = 0;
		c.gridy = 4;
		
		
		
		c.gridwidth = 2; //2 eh o numero de colunas agrupadas
		c.anchor = GridBagConstraints.CENTER;
		
		painel1.add(sPainel,c);
		
		c.gridx = 0;
		c.gridy = 5;
		painel1.add(painel2,c);
		
		tela.setSize(900,400);
		tela.setLocation(65,150);
		tela.setVisible(true);
					
	}
	
	public JFrame getTela() 
	{
		return tela;
	}

	public void setTela(JFrame tela) 
	{
		this.tela = tela;
	}
	
}
-------------------------------------------------------------------------------------------

CLASSE DE CONEXÃO COM O BANCO DE DADOS:
package Modelo;

import java.sql.*;
import java.util.Vector;

public class DAOCliente 
{
	private Connection c;
	private PreparedStatement PS;
	private ResultSet R;
	
	public DAOCliente()
	{
		try
		{
			Class.forName("org.postgresql.Driver");
			c = DriverManager.getConnection("jdbc:postgresql:bancoVendas", "postgres", "postgres");
				PS = null;
				R = null;
		
		}
		catch(Exception e)
		{
		
		}
	}
	
	public Vector consultarTodos()
	{
		Vector V = new Vector();
		
		try{
			PS = c.prepareStatement("SELECT * FROM cliente");
			R = PS.executeQuery();
			while(R.next())
			{
				
				
				Cliente C = new Cliente();
				C.setCodigo(R.getString("Codigo"));
				C.setNome(R.getString("Nome"));
				C.setEndereco(R.getString("Endereco"));
				C.setTel_cel(R.getString("Tel_Cel"));
				
				
				V.add(C);
				
			}
			return V;
		}
		catch(Exception e)
		{
			System.out.println("" + e);
			return null;
		}
		
	}
	
	public void cadastrar (Cliente C)
	{
		try
		{
			PS = c.prepareStatement("INSERT INTO cliente VALUES(?,?,?,?)");
			PS.setString(1,C.getCodigo());
			PS.setString(2,C.getNome());
			PS.setString(3,C.getEndereco());
			PS.setString(4,C.getTel_cel());
			PS.executeUpdate();
			//executar SQL
		}
		catch(Exception e)
		{
			
		}
	}
	
	public void alterar(Cliente C)
	{
		try
		{
			PS = c.prepareStatement("UPDATE cliente SET nome=?,endereco=?,tel_cel=? WHERE codigo=?");        
            
            PS.setString(1,C.getNome());        
            PS.setString(2,C.getEndereco());        
            PS.setString(3,C.getTel_cel());        
            PS.setString(4,C.getCodigo());        
            PS.executeUpdate();  
		}
		catch (Exception e)
		{
			
		}
	}
	
	public void excluir (Cliente C)
	{
		try{
			PS = c.prepareStatement("DELETE FROM cliente WHERE codigo=?");
			PS.setString(1,C.getCodigo());
			PS.executeUpdate();
		}
		catch(Exception e){
			
		}
	}
	
	
	public Cliente consultar (Cliente C)
	{
		try{
			PS = c.prepareStatement("SELECT * FROM cliente WHERE codigo=?");        
            PS.setString(1,C.getCodigo());        
            R = PS.executeQuery();        
            if(R.next())
            {        
            	C.setCodigo(R.getString("Codigo"));         
                C.setNome(R.getString("Nome"));        
                C.setEndereco(R.getString("Endereco"));        
                C.setTel_cel(R.getString("Tel_Cel"));        
                return C;
                       
            }  
            else
            	return null;
         			
		}
		catch(Exception e)
		{
			return null;	
		}
		
	}
	
	public void finalize()
		{
		//metodo automatico para fechamento de pendencias.
			try
			{
				PS.close();
				c.close();
			}
			catch(Exception e)
			{
			}		
			
		}
	
		
		
}
---------------------------------------------------------------------------------------

CLASSE CONTROLE DO CLIENTE:

package Controle;

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;

import Modelo.*;
import Visual.*;

public class ControleCliente implements ActionListener
{
	
	private JFrame tela;
	
	public ControleCliente(JFrame tela)
	{
		this.tela = tela;
	}
	public ControleCliente()
	{
		
	}
	
	
	
	public void actionPerformed(ActionEvent e)
	{
		
		JPanel painel = (JPanel)tela.getContentPane().getComponent(0);
		JScrollPane sPainel = (JScrollPane)painel.getComponent(8);
		JViewport JV = (JViewport)sPainel.getComponent(0);
		JTable tabela = (JTable)JV.getComponent(0);
		DefaultTableModel DTM = (DefaultTableModel)tabela.getModel();
					
		Cliente C = new Cliente();
		DAOCliente DAO = new DAOCliente();
		
		JTextField codigo = (JTextField)painel.getComponent(1);
		JTextField nome = (JTextField)painel.getComponent(3);
		JTextField endereco = (JTextField)painel.getComponent(5);
		JTextField tel_cel = (JTextField)painel.getComponent(7);
		
		
		C.setCodigo(codigo.getText());
		C.setNome(nome.getText());
		C.setEndereco(endereco.getText());
		C.setTel_cel(tel_cel.getText());
		
		
		
		
		
		
		
		
		
		if(e.getActionCommand().equals("Cadastrar"))
		{
			DTM.addRow(new String[]{C.getCodigo(),C.getNome(),C.getEndereco(),C.getTel_cel()});
			DAO.cadastrar(C);
			
			JOptionPane.showMessageDialog(null,"Cadastrado Confirmado");
			
			codigo.setText("");
			nome.setText("");
			endereco.setText("");
			tel_cel.setText("");
		
		}
		
		if (e.getActionCommand().equals("Alterar"))
		{
			
			
			for(int i=0;i<DTM.getRowCount();i++)
			{
				
				if(DTM.getValueAt(i,1).equals(C.getCodigo()))
				{
					DAO.alterar(C);
					DTM.setValueAt(C.getNome(),i,1);
					DTM.setValueAt(C.getEndereco(),i,2);
					DTM.setValueAt(C.getTel_cel(),i,3);
					JOptionPane.showMessageDialog(null,"Alteração concluída");
										
				}
				else
				{
					JOptionPane.showMessageDialog(null,"Alteração Código inexistente");
				}
			}
			
			
			
			
			
				
				
			
			
			
			
			
			
		}
	
			
		
		
if(e.getActionCommand().equals("Excluir")){
			
			boolean achou=false; int pos=0;
			
			DAO.excluir(C);
			for(int i=0;i<DTM.getRowCount();i++)
			{
				if(DTM.getValueAt(0,i).equals(C.getCodigo())){
					pos=i;
					achou=true;
				}
				if(achou)
				{
					DTM.removeRow(pos);
					break;
					
				}
			}
			JOptionPane.showMessageDialog(null,"Cadastro Excluído");
			
			codigo.setText("");
			nome.setText("");
			endereco.setText("");
			tel_cel.setText("");
			
		}	

if(e.getActionCommand().equals("Consultar"))
{
	
	C=DAO.consultar(C);
	if(C == null)
	{
		JOptionPane.showMessageDialog(null,"Cadastro Inexistente");
		
		
	}
	else
	{
		codigo.setText(C.getCodigo());
		nome.setText(C.getNome());
		endereco.setText(C.getEndereco());
		tel_cel.setText(C.getTel_cel());
					
		JOptionPane.showMessageDialog(null,"Consulta efetuada com sucesso");
		DTM.addRow(new String[]{C.getCodigo(),C.getNome(),C.getEndereco(),C.getTel_cel()});
	 
	}
} 
		
			
		if(e.getActionCommand().equals("Sair"))
		{
			tela.dispose();
		}
		
	}

}
--------------------------------------------------------------------------------------

CLASSE PARA CONTROLAR A TELA PRINCIPAL:

package Controle;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import Visual.*;
import Modelo.*;
import Controle.ControleCliente;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import java.lang.*;

public class ControleTelaInicial implements ActionListener
{
private JFrame tela;
	
	public ControleTelaInicial(JFrame tela)
	{
		this.tela = tela;
	}
	public ControleTelaInicial()
	{
		
	}

	public void actionPerformed (ActionEvent e)
	{

		
		if (e.getActionCommand().equals("Cliente"))
		{
			TelaCliente TC = new TelaCliente();	
			DAOCliente DAO = new DAOCliente();
			Vector V = DAO.consultarTodos();
			JPanel painel = (JPanel)tela.getContentPane().getComponent(0);
			JScrollPane sPainel = (JScrollPane)painel.getComponent(8);
			JViewport JV = (JViewport)sPainel.getComponent(0);
			JTable tabela = (JTable)JV.getComponent(0);
			DefaultTableModel DTM = (DefaultTableModel)tabela.getModel();
			
			for (int i=0; i><V.size(); i++)
			{
				Cliente C = (Cliente)V.get(i);
				
				DTM.setValueAt(C.getCodigo(), 1, i);
				DTM.setValueAt(C.getNome(), 2, i);
				DTM.setValueAt(C.getEndereco(), 3, i);
				DTM.setValueAt(C.getTel_cel(), 4, i);
				
			}
			
			
			
		}
		
		if (e.getActionCommand().equals("Fornecedor"))
		{
			TelaFornecedor TF = new TelaFornecedor();
		}
		
		if (e.getActionCommand().equals("Produto"))
		{
			TelaProduto TP = new TelaProduto();
		}
		
		if (e.getActionCommand().equals("Sair"))
		{
			System.exit(0);
		}
		
		
	}
		
	
}
-----------------------------------------------------------------------------------------------
O programa funciona corretamente, Adiciona, excluir, altera e busca dados no banco de dados.

Mais não consigo exibir o conteúdo que está no banco na tabela que a tela exibe, o que posso estar fazendo errado?

Inseri os comandos necessários na classe ControleTelaInicial mais quando execulto além de não listar os dados aparece o seguinte erro no console:

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at Controle.ControleTelaInicial.actionPerformed(ControleTelaInicial.java:40)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.AbstractButton.doClick(Unknown Source)

at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)

at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Não entendo muito de java, estou aprendendo agora, PLEASE! alguém pode me ajudar?

Obrigado.

Se quizer me add, MSN: [email removido]
>

3 Respostas

S

DaNNyele veja se nesse trecho do código não está retornando algum valor nulo

C.setCodigo(R.getString("Codigo")); C.setNome(R.getString("Nome")); C.setEndereco(R.getString("Endereco")); C.setTel_cel(R.getString("Tel_Cel"));

faça um teste criando o cliente com valores estáticos para garantir.
tipo

C.setCodigo("100"); C.setNome("Joao"); C.setEndereco("Rua 100 numero 100"); C.setTel_cel("55555");

D

Ficou assim:

public Vector consultarTodos()
	{
		Vector V = new Vector();
		
		try{
			PS = c.prepareStatement("SELECT * FROM cliente");
			R = PS.executeQuery();
			while(R.next())
			{
				
				
				Cliente C = new Cliente();
				C.setCodigo(R.getString("001"));
				C.setNome(R.getString("Daniele"));
				C.setEndereco(R.getString("rua Bog"));
				C.setTel_cel(R.getString("123456"));
				
				
				V.add(C);
				
			}
			return V;
		}
		catch(Exception e)
		{
			System.out.println("" + e);
			return null;
		}
		
	}

E deu o seguinte erro:

org.postgresql.util.PSQLException: A nome da coluna 001 não foi encontrado neste ResultSet.

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at Controle.ControleTelaInicial.actionPerformed(ControleTelaInicial.java:40)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.AbstractButton.doClick(Unknown Source)

at javax.swing.AbstractButton.doClick(Unknown Source)

at javax.swing.plaf.basic.BasicMenuItemUI$Actions.actionPerformed(Unknown Source)

at javax.swing.SwingUtilities.notifyAction(Unknown Source)

at javax.swing.JComponent.processKeyBinding(Unknown Source)

at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(Unknown Source)

at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(Unknown Source)

at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(Unknown Source)

at javax.swing.JMenuBar.processKeyBinding(Unknown Source)

at javax.swing.KeyboardManager.fireBinding(Unknown Source)

at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source)

at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown Source)

at javax.swing.SwingUtilities.processKeyBindings(Unknown Source)

at javax.swing.UIManager$2.postProcessKeyEvent(Unknown Source)

at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)

at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)

at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)

at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)
S

ta errado, tira os gets.

Cliente C = new Cliente(); C.setCodigo(R.getString("001")); C.setNome(R.getString("Daniele")); C.setEndereco(R.getString("rua Bog")); C.setTel_cel(R.getString("123456"));
deixa assim

Cliente C = new Cliente();   
                C.setCodigo("001");   
                C.setNome("Daniele");   
                C.setEndereco("rua Bog");   
                C.setTel_cel("123456");
Criado 21 de maio de 2008
Ultima resposta 23 de mai. de 2008
Respostas 3
Participantes 2