Resulltado do banco da nullpointerexception

21 respostas
P
ola, quando pesquiso no banco um resultado da o erro mencionado acima mas eu sabia q isto poderia ocorrer e tentei usar um outro if para controlar isto mas ele não funciona alguém pode me ajudar a arrumar este codigo ja q ele não esta funcionando ou pode me explicar o q estou fazendo errado para q eu possa arrumar?obg o cod é este
System.out.println("select valor_real_pgto from financa_aluno where rc_aluno='"+ t2.getText() +"'");
			resultado = comando.executeQuery("select valor_real_pgto from financa_aluno where rc_aluno='"+ t2.getText() +"'");//
			if(resultado.next())
			{
				if(resultado.getObject(1).toString()!=null)
				{
					ft[1][k].setText(resultado.getObject(1).toString());//nullpointerexption
					k++;
				}
				else
				{
					JOptionPane.showMessageDialog(null, "Não há registros de pagamento!");
					System.out.println("else");
				}
				System.out.println(ft[1][k].getText()+k);
			}
			if(!(resultado.next()))
			{
				JOptionPane.showMessageDialog(null, "Não há registros de pagamento!");
			}
			else
				
				JOptionPane.showMessageDialog(null, "Esgotou as possibilidades");
obg

21 Respostas

pmlm

O que deverá ser null não é resultado.getObject(1).toString(), mas sim resultado.getObject(1) ou ft[1][k]

DeGuedes

Em qual linha esta dando erro de NullPointerException?

Outra coisa aki:

if(resultado.getObject(1).toString()!=null) { ft[1][k].setText(resultado.getObject(1).toString());//nullpointerexption k++; }
vc ta pegando o resultado e dando um .toString(), e se o valor for Null ele da NullPointerExcpetion…

[]'s

andre_teprom

Não sei se existe alguma implementação melhor, mas uso o try / catch nesse caso para detectar o nullpointerexception e assim determinar quando o resultado da pesquiza não retornou nada ( informo : “Vazio” ).

+++

DeGuedes

andre_teprom:
Não sei se existe alguma implementação melhor, mas uso o try / catch nesse caso para detectar o nullpointerexception e assim determinar quando o resultado da pesquiza não retornou nada ( informo : “Vazio” ).

+++

Boa… eu tambem uso o try/ catch … me ajuda muito!

[]'s

P

ta dando erro na linha ft[1][k].setText(resultado.getObject(1).toString());//nullpointerexption
troquei oresultado.getObject(1).toString() porresultado.getString(1)
mas mesmo assim coninua dando erro na mesma linha =[

andre_teprom

Executa a query acima em algum aplicativo externo.
Se o resultado for vazio, significa que está faltando tratamento para retorno vazio na sua rotina.

+++

DeGuedes

Tente usar o try / catch

try{ ft[1][k].setText(resultado.getObject(1).toString());//nullpointerexption } catch (NullPointerException e) { System.out.println (e); }

[]'s

P
gente eu coloquei o codigo dentro de um try/catch agora meu codigo ficou assim
try{
				System.out.println("select valor_real_pgto from financa_aluno where rc_aluno='"+ t2.getText() +"'");
				resultado = comando.executeQuery("select valor_real_pgto from financa_aluno where rc_aluno='"+ t2.getText() +"'");//
				if(resultado.next())
				{
					if(resultado.getString(1)!=null)
					{
						ft[1][k].setText(resultado.getString(1));
						k++;
					}
					else
					{
						JOptionPane.showMessageDialog(null, "Não há registros de pagamento!");
						System.out.println("else");
					}
					
				}
				if(!(resultado.next()))
				{
					JOptionPane.showMessageDialog(null, "Não há registros de pagamento!");
				}
				
			}
			catch(NullPointerException n)
			{
				JOptionPane.showMessageDialog(null, "Resultado vazio!");
				n.printStackTrace();
			}
mas ainda ta dando akele errro=[
DeGuedes

Tens certeza q o erro é NullPointerException?

Pois se sim, deveria cair no catch…

[]'s

P

sim sim é este o erro eu até modifiquei o codigo o jeito que tu disse dai ficou assim

if(resultado.getString(1)!=null) { try{ ft[1][k].setText(resultado.getString(1)); k++; } catch(NullPointerException e){ System.out.println(e); }
e no console fica

select valor_real_pgto from financa_aluno where rc_aluno='12' java.lang.NullPointerException

DeGuedes

Blza a verificação se um valor for nulo esta dando certo… a pergunta agora é: Todas as suas buscas estao caindo no nullpointerException?

[]'s

P

neste trecho de código sim mas eu acho que é porque alguns alunos tem este campo vazio no banco tipo quando é o primeiro pgto eu queria achar uma maneira de contornar isto tipo se esta vazio só não troca o texto dos textfields se não for vazio troca pelo resultado do banco isto é possivel?

DeGuedes

Tem sim…

if(resultado.getString(1)!=null) { try{ ft[1][k].setText(resultado.getString(1)); k++; } catch(NullPointerException e){ ft[1][k].setText(""); // aki vc deixa o JtextField em branco... }

[]'s

P

DeGuedes,eu tentei desta forma mas continua dando erro :cry: dai não da nullpointer nakela linha ft[1][k].setText(resultado.getString(1)); mas ocorre na linhaft[1][k].setText("");

DeGuedes

Humm…

o q seria esse ft[1][k] ?

[]'s

P

coloquei um system

System.out.println("resultado 1 "+resultado.getString(1)); antes do if
e olha so como ficou o consoleselect valor_real_pgto from financa_aluno where rc_aluno='12' resultado 1 400.0 java.lang.NullPointerException resultado 1 java.lang.NullPointerException resultado 1 java.lang.NullPointerException resultado 1 java.lang.NullPointerException resultado 1 java.lang.NullPointerException
não entendo pq não troca o txt pelo menos pelo valor do primeiro resultado

P

ft é uma matriz de jformatted]textfield q criei no inicio da classe JFormattedTextField ft[][]=new JFormattedTextField[l.length][l.length];
ft[1][k] é um objeto desta matriz é q tipo cada objeto de ft recebera um resultado diferente do banco

andre_teprom

De Guedes,

Da forma como voce sugeriu, também não insere um NULL no campo ?

+++

pmlm

Tal como eu havia dito no primeiro comentário, tf[1][k] também poderia ser null e estar a originar o NullPointerExeption.

if (ft[1][k] == null){
    ft[1][k] = new JFormattedTextField();
}
P
pmlm tu tens razão era o ft[1][k] q estava vazio modifiquei o codigo conforme o q tu disseste e o erro sumiu! mas meu codigo ainda ta errado pois o texto do txtfied não ta trocando =[ o codigo ficou assim
resultado = comando.executeQuery("select valor_real_pgto from financa_aluno where rc_aluno='"+ t2.getText() +"'");//
				while(resultado.next())
				{
					try{
						if(resultado.getString(1)!=null)
						{
							if (ft[1][k] == null){  
							    ft[1][k] = new JFormattedTextField();  
							    ft[1][k].setText(resultado.getString(1));
							} 
							ft[1][k].setText(resultado.getString(1));
							k++;
						}
						
					}
					catch(NullPointerException e){
						System.out.println(e);
						//ft[1][k].setText("");
					}
obg
P

coloquei um system e ficou assim

if (ft[1][k] == null){ ft[1][k] = new JFormattedTextField(); ft[1][k].setText(resultado.getString(1)); k++; System.out.println("if"); } else { ft[1][k].setText(resultado.getString(1)); k++; System.out.println("else"); }
e no console ficou assim

select valor_real_pgto from financa_aluno where rc_aluno='12' if if if if if

Criado 22 de fevereiro de 2011
Ultima resposta 22 de fev. de 2011
Respostas 21
Participantes 4