Classe Pesquisar Cliente

14 respostas
M

Tenho uma classe pesquisar cliente, ela esta pesquisando dereitinho, mais na hora de chamar a outra tela para fazer a alteração, da o seguinte erro java.lang.NullPointerException

public class sai extends javax.swing.JDialog {
	private JTextField txtpesq;
	private JScrollPane jScrollPane1;
	private JTable tbp;
	ResultSet rs;
	DefaultTableModel jTable1Model = new DefaultTableModel();
	Object[]data;
	public static String nomeCidade;
	Said saida;

	/**
	* Auto-generated main method to display this JDialog
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JFrame frame = new JFrame();
				sai inst = new sai(frame);
				inst.setVisible(true);
			}
		});
	}
	
	public sai(JFrame frame) {
		super(frame);
		initGUI();
		dadostable();
	}
	
	private void initGUI() {
		try {
			GroupLayout thisLayout = new GroupLayout((JComponent)getContentPane());
			getContentPane().setLayout(thisLayout);
			{
				txtpesq = new JTextField();
			}
			{
				jScrollPane1 = new JScrollPane();
				{
					TableModel tbpModel = 
						new DefaultTableModel(
								new String[][] { { "One", "Two" }, { "Three", "Four" } },
								new String[] { "Column 1", "Column 2" });
					tbp = new JTable();
					jScrollPane1.setViewportView(tbp);
					tbp.setModel(tbpModel);
					tbp.addMouseListener(new MouseAdapter() {
						public void mouseClicked(MouseEvent evt) {
							tbpMouseClicked(evt);
						}
					});
				}
			}
			thisLayout.setVerticalGroup(thisLayout.createSequentialGroup()
				.addContainerGap(19, 19)
				.addComponent(txtpesq, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				.addGap(41)
				.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 123, GroupLayout.PREFERRED_SIZE)
				.addContainerGap(56, Short.MAX_VALUE));
			thisLayout.setHorizontalGroup(thisLayout.createSequentialGroup()
				.addContainerGap()
				.addGroup(thisLayout.createParallelGroup()
				    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				        .addComponent(txtpesq, GroupLayout.PREFERRED_SIZE, 62, GroupLayout.PREFERRED_SIZE)
				        .addGap(0, 260, Short.MAX_VALUE))
				    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				        .addGap(33)
				        .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 289, GroupLayout.PREFERRED_SIZE)
				        .addGap(0, 0, Short.MAX_VALUE)))
				.addContainerGap(50, 50));
			setSize(400, 300);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public void PreenchejTable1(String Sql)throws SQLException{// prenche a tabela com as informações do banco de dados, dentro do parentese é um parametro
		
		rs=ConexaoBD.getConexao().executeQuery(Sql);// rs é o resultset ele manipula o resultado no banco de dados e o execute query busca no banco de dados e update atualiza o banco de dados
		jTable1Model=(DefaultTableModel)tbp.getModel();//o model q manipula a tabela
		jTable1Model.setNumRows(0);
		try{
			while(rs.next()){// ele vai rodar o while ate achar resultado
				jTable1Model.addRow(new Object[]{rs.getString("nome"),rs.getString("rua"),}); //object manipula resultados
			}
		}
			catch (SQLException erro){
				JOptionPane.showMessageDialog(null, "erro ao listar na tabela !");

			}
		}
	public void dadostable(){
		String Sql="Select * from Cliente";
		try{
			rs=ConexaoBD.getConexao().executeQuery(Sql);
			rs.first();
			PreenchejTable1(Sql);
			}
		catch (SQLException ex){
			JOptionPane.showMessageDialog(null, "erro ao obter proxima cidade !");
	}
	}
	private void pesquisar(){
		String sql="";
		if (txtpesq.getText().length()>0){//vai trazer tudo do banco e vai ordenar por nome
			sql="select * from CLIENTE where upper(NOME) like upper ('"+txtpesq.getText()+"%')order by NOME";
			try {
				rs=ConexaoBD.getConexao().executeQuery(sql);//busca no banco os dados
			}
			catch (SQLException el ){
				el.printStackTrace();
			}
			try {
			if  (rs.next()){
				PreenchejTable1(sql);
			}else{
				LimpaPesquisa();
			}
			}
			catch (SQLException e){
				LimpaPesquisa();
			}
			}
			else{
				LimpaPesquisa();
			}	}	
		
		
			
			private void LimpaPesquisa(){
				jTable1Model.setNumRows(0);
			}
			public void  pegaValor(){
				int row;
				int col = 0;

				try {
					row= tbp.getSelectedRow();
					if (row >= 0){
						Object data=jTable1Model.getValueAt(row, col);
						nomeCidade=data.toString();
						String SQL= "select *from CLIENTE where NOME = '"+nomeCidade+"' " ;
						try {
							rs=ConexaoBD.getConexao().executeQuery(SQL);
							if(rs.first())
							{
								
								   Said.txtnome.setText(rs.getString("NOME"));
								   Said.txtrua.setText(rs.getString("NOME"));
								
								rs.close();
								dispose();
							}
							else{
								JOptionPane.showMessageDialog(null, "Dados incorretos");
							}
						}
						
						catch (RuntimeException e){
							
							e.printStackTrace();
						}
					}
					
				}
				catch (Exception e) {
					nomeCidade ="";
				}


				}
			
			private void tbpMouseClicked(MouseEvent evt) {
				pegaValor();
			}

}

14 Respostas

igor_ks

Coloca o stacktrace ai e a linha que da o erro, sem isso a gente nao sabe onde pode ta dando NullPointer…

o erro classico de NullPointer da qdo vc ta acessando um objeto e ele nao foi instanciado, ou seja, está nulo

jeffev

Tem algum objeto que não está sendo instanciado.

M

Está dando erro na linha 147

E

Linha 14 não pode ser. Linha 14 deve ser na sua ide, Só copie e cole o código na sua linha 14 pra gente ver.

Vou dar um chute: não está faltando um espaço depois de Object[] na linha 7 não?

M

Linha 14? não compreendi, coloquei o espaço e não foi, está fazendo a consulta certinho, mais na hora q clico na linha para editar da o erro

E

Ah, foi mal, li linha 14, não 147. Então o caso é que Said tá vazio cara, tu não deu o new Said() em lugar nenhum no teu código. Ou isso ou txtnome está vazio. Verifique se você atribuiu valor a essas variáveis em outras partes do código.

M

podia me dar um exemplo?

E

Vish, agora que eu entendi de verdade.

Primeira coisa: quem criou a classe Said? Porque você não deu

this.saida = new Said(); em parte alguma do seu código?

Em resumo, que classe “Said” é essa afinal? Quem criou e pra que ela serve? Você não está usando objetos da classe que você criou.

Eu poderia sim mostrar o código certo, mas acho que você consegue descobrir com essa dicas que eu dei.

M

Esse Said é para chamar a tela Saida, pois lah que eu vou fazer a alteração

M

Coloquei o codigo e ele não chama a tela Saida

R
Said.txtnome.setText(rs.getString("NOME"));  
Said.txtrua.setText(rs.getString("NOME"));
  1. Ta errado ai em cima, na linha 147, voce ta setando textfields diferentes com o mesmo atributo (NOME). NOME não pode ser igual a RUA.
  2. Tem certeza que a consulta esta retornando dados ? se sim, tem certeza que as colunas nao estao vazia ?
  3. Sete os componentes JTextFields que voce quer recuperar em outro JFrame como ‘static’, exemplo: public static JTextField txtnome;

Abraços.

E

Cara desculpa, mas, mas nãos e trata de copiar e colar o código. Responda as perguntas que eu fiz. Vejo que você num entendeu ainda que a instância do objeto está faltando, que você está chamando uma propriedade estática, enfim, primeiro pesquise sobre instância de objetos, pra poder entender o que está errado no seu código.

M

Gente …podemos dizer q isso não era erro, apenas falta de pensar, primeiro tenho q chamar a tela Saida e colocar um botao pesquisar nela para efetuar a alteração… brigadão a todos.

OBS: Creditos para elissonandrade… Valeussss

E

Aêeee, parabéns, muitos costumam desistir depois de uma dessa, pedem pro amigo fazer, mas que bom que você insistiu ate achar o problema. Se puder, passa o código certinho pra que quem estiver com a mesma dúvida ache uma solução.

Criado 23 de outubro de 2012
Ultima resposta 27 de out. de 2012
Respostas 14
Participantes 5